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 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]

 

转载于:https://www.cnblogs.com/hansongjiang/p/3976846.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值