我目前正在开发一个java项目,我需要它的一部分来给我一个可以满足的数字组合列表
1<= A<=B<=C<=D<=E<=F<=N
哪里N
是任意整数 as small as 75
这将被视为输入。 A B C D E F
可以是any integer
只要它fulfills the equality
.
我知道我可以使用 brute force
简单地浏览每个组合。但这需要很长时间。我想要尝试做的是split
等于 two separate
平等的方式仍然满足原来的要求,但它会使运行时间减少近一半。
最佳答案
假设您想要满足指定条件的 A、B、C、D、E、F
的所有可能组合的列表,那么没有比暴力破解更有效的方法了 backtracking search .
对于A
的每个可接受的值:找到B
的所有可接受的值,然后对于每个可接受的值,找到C
...等等。
您将获得等效的运行时间:
- 分而治之
- 动态规划
- 贪婪(只会简化为回溯)
(但这些算法不适合这个问题,需要人为的实现)
关于java - 有效地查找一组数字的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13403747/