java实现组合-n个数取其中k个数的所有组合

来源:互联网 发布:数据库运维主要做什么 编辑:程序博客网 时间:2024/05/16 17:05

java实现组合,假设一组数{1,2,3,4,5,6,7,8} ,n = 8 k = 4;

从8个数中取第1个数 比如1,然后在剩下7个里面去第二个数,比如2,然后第三个在剩下的六个数中选择一个数。依次类推

如果第一次去1,第二次取第一个数时,不需要把1再列举进去,会重复


import java.util.ArrayList;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 ; }}}


12 0
原创粉丝点击