原文链接:http://blog.csdn.net/fanfan199312/article/details/62422244

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

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

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

 
  1. import java.util.ArrayList;  
  2.   
  3. public class Combine {  
  4.     private static ArrayList <Integer>tmpArr = new ArrayList<>();  
  5.     public static void main(String[] args) {  
  6.         int [] com = {1,2,3,4,5,6,7,8};  
  7.         int k = 8;    
  8.         if(k > com.length || com.length <= 0){  
  9.             return ;  
  10.         }  
  11.         combine(0 ,k ,com);  
  12.     }  
  13.     public static void combine(int index,int k,int []arr) {  
  14.         if(k == 1){  
  15.             for (int i = index; i arr.length; i++) {  
  16.                 tmpArr.add(arr[i]);  
  17.                 System.out.println(tmpArr.toString());  
  18.                 tmpArr.remove((Object)arr[i]);  
  19.             }  
  20.         }else if(k > 1){  
  21.             for (int i = index; i <= arr.length - k; i++) {  
  22.                 tmpArr.add(arr[i]);  
  23.                 combine(i + 1,k - 1, arr);  
  24.                 tmpArr.remove((Object)arr[i]);  
  25.             }  
  26.         }else{  
  27.             return ;   
  28.         }  
  29.     }  
  30. }  
posted on 2017-11-04 13:24  blythe  阅读(631)  评论(0)    收藏  举报