1
1
递归实现(伪代码):
您可以从不同的角度做得更好,比如尾部递归、修剪(只有当YYY有3个数字时,才可以有XXX,YYY)。。。但这对你的应用程序来说已经足够了。 分而治之会有很大的进步。 |
2
2
好吧,我将从蛮力方法开始,然后应用一些启发式方法来修剪搜索空间。只需将右边的列表用逗号分开,并迭代所有可能的方法将它们分组为n个项(其中n是解决方案中的项数)。您可以使用以下两个规则跳过无效的可能性。 (1) 您知道,任何一组1或2位数字都必须以一个术语开头。
|
3
1
我认为您应该尝试所有可能的方法来解析字符串并计算总和,然后返回一个给出正确总和的结果列表。这应该只是一个结果,在大多数情况下,除非你是非常不幸的。
|
4
1
读入 C++
数字的实际破解留给读者作为练习。
|
5
1
我认为你的主要问题是决定如何解析这些数字。剩下的只是死记硬背地处理字符串->数字和组合上的迭代。 例如,在您给出的示例中,您可以试探性地确定一个一位数后跟一个三位数的数字实际上是一个四位数的数字。像这样的启发式方法在更大的数据集上适用吗?如果不是,您还可能需要迭代可能的输入解析组合,这意味着原始解决方案将具有很大的多项式复杂性(O(n ),其中x是>4). 实际上,使用递归搜索很容易检查哪些数字相加。
|
danial · 如何在多个字符串的每个位置找到最频繁的字符 2 年前 |
Manny · 如何比较Perl中的字符串? 2 年前 |
Diret · 获取范围内每个数字的子倍数的算法 2 年前 |
Saif · 排序时python如何决定何时调用比较器? 2 年前 |