无法定义循环算法

时间:2014-12-02 16:37:59

标签: java loops

我试图创建一系列数字的所有可能数字组合的子集。这是一个例子:

数字清单:1,2,3,4,5,6

子集(组中的3个数字):

1,2,3

1,2,4

1,2,5-

1,2,6

1,3,4

1,3,5

1,3,6-

-1,4,5-

-1,4,6-

1,5,6

2,3,4-

2,3,5-

2,3,6-

2,4,5-

2,4,6-

2,5,6-

3,4,5-

-3,4,6-

-3,5,6-

4,5,6

我在尝试确定循环算法以实现此列表时感到困惑。我可以看到我需要一个嵌套循环,但逻辑逃脱了我。此示例包含所有可能的3个数字组,但仅作为示例。我需要能够扩展到更大的列表和更多的组。请帮忙!

我是一个Java迷,所以我很欣赏Java解决方案,但对任何语言甚至伪代码的解释都很满意。

1 个答案:

答案 0 :(得分:1)

我写了一个递归代码 -

public class SubSetsOfLengthK {
    public static void main(String[] args) {
    int n = 6;
    int k = 3;

    int[] arr = new int[k];
    printSubSets(1,n,k,arr,0);
}

/*
    Method prints all the subsets of length k of set (1.....n)
*/
private static void printSubSets(int start, int n, int k, int[] arr, int pos) {
    if(k==0) {
        for(int a : arr) {
            System.out.print(a+" ");
        }
        System.out.println();
        return;
    }

    for(int j=start;j<= n;j++) {
        arr[pos] = j;
        printSubSets(j+1,n,k-1, arr, pos+1);
    }
  }
}

要快速访问,您可以在此处查看https://coderpad.io/2R9CAG47