我目前正在开发一个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
平等到{{1}}平等,但仍然能够满足原始平等,但它会将运行减少近一半。
答案 0 :(得分:2)
假设您需要满足指定条件的A, B, C, D, E, F
的所有可能组合的列表,则无法比执行强力backtracking search更有效。
对于A
的每个可接受的值:找到B
的所有可接受值,然后为每个值找到C
...等等。
您将获得与以下相同的运行时间:
(但这些算法不适合这个问题,需要人为的实施)
答案 1 :(得分:0)
以下内容仅生成有效的有效组合。 N的大值可能需要一段时间,但这是因为会有大量的组合来满足您的不等式。
N = 75; 300500200组合
N = 100; 1609344100种组合
for(int A = 1; A <= N ; ++A) {
for(int B = A; B <= N; ++B) {
for(int C = B; C <= N; ++C) {
for(int D = C; D <= N; ++D) {
for(int E = D; E <= N; ++E) {
for(int F = E; F <=N; ++F) {
// do whatever you want with the combo
}
}
}
}
}
}