首页 > 代码库 > C(n,k)在n个不重复数中获得k个数

C(n,k)在n个不重复数中获得k个数

//比如在数组a[]={1,7,89,87} 中k=2的时候 组合为 C(4,2)=6 

package
再次开始;import java.util.ArrayList;//本次实现的是在n个不重复树中提取k个;输出各种组合//在 1 2 3 7 8public 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]

 

C(n,k)在n个不重复数中获得k个数