![]() |
1
1
递归实现(伪代码):
您可以从不同的角度做得更好,比如尾部递归、修剪(只有当YYY有3个数字时,才可以有XXX,YYY)。。。但这对你的应用程序来说已经足够了。 分而治之会有很大的进步。 |
![]() |
2
2
好吧,我将从蛮力方法开始,然后应用一些启发式方法来修剪搜索空间。只需将右边的列表用逗号分开,并迭代所有可能的方法将它们分组为n个项(其中n是解决方案中的项数)。您可以使用以下两个规则跳过无效的可能性。 (1) 您知道,任何一组1或2位数字都必须以一个术语开头。
|
![]() |
3
1
我认为您应该尝试所有可能的方法来解析字符串并计算总和,然后返回一个给出正确总和的结果列表。这应该只是一个结果,在大多数情况下,除非你是非常不幸的。
|
![]() |
4
1
读入 C++
数字的实际破解留给读者作为练习。
|
![]() |
5
1
我认为你的主要问题是决定如何解析这些数字。剩下的只是死记硬背地处理字符串->数字和组合上的迭代。 例如,在您给出的示例中,您可以试探性地确定一个一位数后跟一个三位数的数字实际上是一个四位数的数字。像这样的启发式方法在更大的数据集上适用吗?如果不是,您还可能需要迭代可能的输入解析组合,这意味着原始解决方案将具有很大的多项式复杂性(O(n ),其中x是>4). 实际上,使用递归搜索很容易检查哪些数字相加。
|
![]() |
feasega · 聚合物模拟-2个节点之间的最短路线,适用于所有节点 5 月前 |
![]() |
Alisa Petrova · 在有向图中更改一对顶点以创建循环 5 月前 |
![]() |
b39b332d · 使用C++标准库实现高效间隔存储 10 月前 |
![]() |
Paul C · 在维基百科上,将二叉搜索树转换为排序链表的算法是否存在错误? 10 月前 |
![]() |
ABGR · 二叉树的直径——当最长路径不通过根时的失败案例 10 月前 |
![]() |
EpicAshman · 数独棋盘程序中同一列和同一行出现两次的数字 10 月前 |