Java 有效地在一组数字中查找组合

Java 有效地在一组数字中查找组合,java,combinations,memory-efficient,Java,Combinations,Memory Efficient,我目前正在从事一个java项目,我需要它的一部分来给我一个完整的数字组合列表 1假设您想要一个满足指定条件的a、B、C、D、E、F所有可能组合的列表,那么您不可能比使用暴力更有效 对于A的每个可接受值:查找B的所有可接受值,然后查找C。。。等等 您将通过以下方式获得等效的运行时间: 分而治之 动态规划 贪婪(这只会减少回溯) (但这些算法不适用于此问题,需要人为实现)以下仅生成有效的组合。对于N的大值可能需要一段时间,但这是因为会有大量的组合满足你的不等式 N=75;300500200组合

我目前正在从事一个java项目,我需要它的一部分来给我一个完整的数字组合列表

1假设您想要一个满足指定条件的
a、B、C、D、E、F
所有可能组合的列表,那么您不可能比使用暴力更有效

对于
A
的每个可接受值:查找
B
的所有可接受值,然后查找
C
。。。等等

您将通过以下方式获得等效的运行时间:

  • 分而治之
  • 动态规划
  • 贪婪(这只会减少回溯)

(但这些算法不适用于此问题,需要人为实现)

以下仅生成有效的组合。对于N的大值可能需要一段时间,但这是因为会有大量的组合满足你的不等式

N=75;300500200组合

N=100;1609344100组合


用于(int A=1;A您是否需要A、B、C、D、E和F的所有可能组合?是
A
B
C
,等等。所有小于
N
?如果是,您可以生成一个由六个随机数组成的序列,对它们进行排序,并将它们称为
A
B
C
,等等。@PWhite是的,我会我需要所有可能的组合。我计划采用这些组合,然后通过其他方法进一步消除它们。如果你否决这个答案,请提供一个原因,以便我可以改进我未来的答案。
    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
                        }
                    }
                }
            }
        }
    }