//比如在数组a[]={1,7,89,87} 中k=2的时候 组合为 C(4,2)=6
package 再次开始; import java.util.ArrayList; //本次实现的是在n个不重复树中提取k个;输出各种组合 //在 1 2 3 7 8 public class 组合问题 { public static void main(String args[]) { int arr[]=new int[]{1,3,4,6,9};// ArrayList<Integer> arry=new ArrayList<Integer>();//用于保存当前的求得的序列 dfs(arr,arry, 3, 0); } // arry 原始排序数组, k表示取多少个,start表示当前可以选取的下标 private static void dfs(int[] arr,ArrayList<Integer> arry, int k, int start) { // TODO Auto-generated method stub if(arry.size()==k) { System.out.println(arry); return; } else { for(int i=start;i<arr.length;i++) { arry.add(arr[i]); dfs(arr,arry,k,i+1); arry.remove(arry.size()-1); } } } }
ref:http://blog.csdn.net/u010500263/article/details/18435495
int arr[]=new int[]{1,3,4,6,9};取得3个
[1, 3, 4] [1, 3, 6] [1, 3, 9] [1, 4, 6] [1, 4, 9] [1, 6, 9] [3, 4, 6] [3, 4, 9] [3, 6, 9] [4, 6, 9]