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 ;
}
}
}