我的问题有点难以解释,所以我会尽力而为。我正在编写一个程序,该程序将采用目标数字和其他数字列表。我希望它从列表中添加所有可能的数字组合,直到列表中的数字组合总和与目标数字相同。例如,如果目标数字是 6,并且提供的列表中有数字 <2, 3, 4, 5>,那么程序将打印 2+4=6 的解。
我目前的程序设置了 4 个嵌套循环,其中最外层的循环检查第一个数字为常量的组合。第二个循环保持第二个数字不变,其他两个也是如此。如果上述列表的目标数为 20,则程序将按以下方式检查:
2
2+3
2+3+4
2+3+4+5
2+3+5
2+4
2+4+5
2+5
3
3+4
3+4+5
3+5
4
4+5
5
然后它会返回一条消息说没有找到解决方案。这适用于小列表,但如果列表包含许多小数字并且目标数字很大,则效果不佳。由于程序只有四个循环,所以最多只能添加 4 个数字。
我不禁想到必须有更好的方法来做到这一点,因为对于更长的列表,唯一的解决方案是制作更多的嵌套循环,这是不切实际的。有没有办法在没有嵌套循环的情况下遍历数字列表的所有组合?
我希望这很容易理解。如果您想查看我的代码,请告诉我。谢谢您的帮助!