数组 m选n 组合
来源:互联网 发布:什么叫软件饱和 编辑:程序博客网 时间:2024/06/01 07:18
第一种:
public class Combine {private static ArrayList <Integer>tmpArr = new ArrayList<>();public static void main(String[] args) {int [] com = {1,2,3,4,5,6,7,8};int k = 8;if(k > com.length || com.length <= 0){return ;}combine(0 ,k ,com);}public static void combine(int index,int k,int []arr) {if(k == 1){for (int i = index; i < arr.length; i++) {tmpArr.add(arr[i]);System.out.println(tmpArr.toString());tmpArr.remove((Object)arr[i]);}}else if(k > 1){for (int i = index; i <= arr.length - k; i++) {tmpArr.add(arr[i]);combine(i + 1,k - 1, arr);tmpArr.remove((Object)arr[i]);}}else{return ; }}}
第二种:
public static void main(string args[]){
String[] str = { "3.2", "2.1", "1.8","4.5"};
getNext(null, str, 4);
System.out.println(list66);
}
private static List<String> list66 = new ArrayList<String>();
public static void getNext(String begin, String[] s, int num) {
if (num > 1) {
for (int i = 0; i < s.length - num+1; i++) {
//取出一个字符
String str = s[i];
//数组后边的元素组成新数组
String[] newS = Arrays.copyOfRange(s, i + 1, s.length);
//递归,从后面的n-1个数种选出num-1个
getNext(begin == null ? str : (begin + "*" + str), newS,num - 1);
}
} else {
//如果从剩下的s中选出1个数,那么前缀依次和s中的所有元素组合一次
for (int b = 0; b < s.length; b++) {
list66.add(begin + "*" + s[b]);
}
}
}
阅读全文
0 0
- 数组 m选n 组合
- m选n组合问题
- 数学中 m选n组合
- JAVA-- M选N的组合算法
- 组合C(m,n)
- m个数字任选n个数组进行组合
- 组合数C(n,m)
- 求n个数选m个数的组合数
- n选m个元素组合java实现
- 从长度为N的数组中找出所有M个元素组合的优化算法
- 从大小为n的数组中取出m个数的组合
- 组合数算法 C(n,m)(n>=m)
- m个数取n个进行组合 C m n
- 计算组合数C(m,n)
- C(n,m)的组合问题
- 变态组合数C(n,m)求解
- m中选n的组合算法
- 组合数求模C(n,m)%(10^10)
- Ganglia api接口安装(python版)
- 关于aop的两种方式-基于注解和基于aspectj
- jsp
- ISE的IP核clocking wizard使用和例化
- 《深入理解mybatis原理》 MyBatis缓存机制的设计与实现
- 数组 m选n 组合
- MNIST——softmax回归
- iOS工程自动化(git 操作)
- 让VS2015添加新类、接口时自动添加public关键字
- xml简单介绍以及libmxml编程
- 嵌入式面试总结
- 汉化Ambari的方法
- zcmu-1929
- Dubbo-概述,示例Demo