原文链接: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再列举进去,会重复
- 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 ;
- }
- }
- }
浙公网安备 33010602011771号