这是一个简单的问题,大一刚学编程的时候做的笔记。
打印出从1、2、3……n中取出r个数的不同组合(n>=r>=1)
例如n=3,r=2,输出:
1,2
2,3
下面是实现的代码:
public class Combination { public static void combine(int[] list, int k, int l, int r, int n) { if (k + l > n + 1) return; if (l == 0) { for (int i = 0; i < r; i++) System.out.print(list[i] + " "); System.out.println(); return; } list[r - l] = k; combine(list, k + 1, l - 1, r, n); if (k + l <= n) combine(list, k + 1, l, r, n); } public static void main(String[] args) throws NumberFormatException{ int n = 5; int r = 3; int[] list = new int[r]; int k = 1; int l = r; Combination.combine(list, k, l, r, n); } }
当时真的是不知道变量命名规范啊,都用一个字母来表示……而且没有写一个注释。等我有空再来研究一下这个程序,再做解释。