相关疑难解决方法(0)

组合而不重复N元素而不使用for..to..do

我希望在列表中加载N个数字的组合而不重复,给予输入元素和组.例如,有4个元素[1,2,3,4],我有:

Group 1: [1][2][3][4]; 
Group 2: [1,2][1,3][1,4][2,3][2,4][3,4];
Group 3: [1,2,3][1,2,4][1,3,4][2,3,4]
Group 4: [1,2,3,4]
Run Code Online (Sandbox Code Playgroud)

现在,我已经使用嵌套循环解决了它,例如对于组2,我写道:

  for x1 := 1 to 3 do
    for x2 := Succ(x1) to 4 do
      begin
        // x1, x2 // 
      end
Run Code Online (Sandbox Code Playgroud)

或者对于第3组,我写道:

  for x1 := 1 to 2 do
    for x2 := Succ(x1) to 3 do
      for x3 := Succ(x2) to 4 do
      begin
        // x1, x2, x3 // 
      end
Run Code Online (Sandbox Code Playgroud)

等其他团体.一般来说,如果我想为N组做,我可以这样做,而不用嵌套循环编写N程序?我已经想到了一个双重while..do循环一个用于计数器和一个用于组计数,但所以有点难,我想知道是否有一些解决方案更简单和快速,也使用运算符布尔或其他东西.谁可以给我一些建议呢?非常感谢.

delphi algorithm combinatorics delphi-xe2

10
推荐指数
1
解决办法
2万
查看次数

标签 统计

algorithm ×1

combinatorics ×1

delphi ×1

delphi-xe2 ×1