java - 无法定义循环算法

标签 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 解决方案,但也很乐意使用任何语言甚至伪代码进行解释。

最佳答案

我写了一个递归代码 -

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

关于java - 无法定义循环算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27254435/

相关文章:

java - 在 java 图像更改时启用转换

java - AutoCloseable的close方法抛异常有意义吗?这应该如何处理?

c - 更优雅地比较 argv 和字符串文字

java - 如何在Java中打印回文的和?

jquery - 循环遍历 jQuery 数据表以获取特定列

java - 试图弄清楚弱引用何时开始被删除

java - Android 对 Activity 的弱引用在 Activity 执行时变为空

java - Twitter 的架构图是什么样子的?

java - ActionListener 和 for 循环

javascript - 如何找到与给定数字最匹配的数字