查找所有6号JAVA组合

查找所有6号JAVA组合,java,combinations,combinatorics,Java,Combinations,Combinatorics,我对组合有问题 我需要将最后一个数从6增加,如果最后一个数是50倒数第二个数,则增加1 我有这个代码,可以找到所有的排列。但我想要组合 我需要这样,如果程序已经生成123456,再也不会生成组合这个数字,所以123456,它就像6543231和6123445一样 hladaj[N-2]++; while(((hladaj[N-3]==hladaj[N-2])||(hladaj[N-2]==hladaj[N-4])||(hladaj[N-2]==hladaj[N-5])||(hladaj[

我对组合有问题

我需要将最后一个数从6增加,如果最后一个数是50倒数第二个数,则增加1

我有这个代码,可以找到所有的排列。但我想要组合

我需要这样,如果程序已经生成123456,再也不会生成组合这个数字,所以123456,它就像6543231和6123445一样

hladaj[N-2]++;
    while(((hladaj[N-3]==hladaj[N-2])||(hladaj[N-2]==hladaj[N-4])||(hladaj[N-2]==hladaj[N-5])||(hladaj[N-2]==hladaj[N-6])||(hladaj[N-2]==hladaj[N-7]))){
        hladaj[N-2]++;
    }

    if (hladaj[N-2]>MAXC) {
        hladaj[N-2]=hladaj[N-2]-MAXC;           
        hladaj[N-3]++;

        while(((hladaj[N-3]==hladaj[N-2])||(hladaj[N-2]==hladaj[N-4])||(hladaj[N-2]==hladaj[N-5])||(hladaj[N-2]==hladaj[N-6])||(hladaj[N-2]==hladaj[N-7]))){
            hladaj[N-2]++;
        }
        while(((hladaj[N-3]==hladaj[N-2])||(hladaj[N-3]==hladaj[N-4])||(hladaj[N-3]==hladaj[N-5])||(hladaj[N-3]==hladaj[N-6])||(hladaj[N-3]==hladaj[N-7]))){
            hladaj[N-3]++;
        }

        if (hladaj[N-3]>MAXC) {
            hladaj[N-3]=hladaj[N-3]-MAXC;                   
            hladaj[N-4]++;
            while(((hladaj[N-3]==hladaj[N-2])||(hladaj[N-3]==hladaj[N-4])||(hladaj[N-3]==hladaj[N-5])||(hladaj[N-3]==hladaj[N-6])||(hladaj[N-3]==hladaj[N-7]))){
                hladaj[N-3]++;
            }

            while(((hladaj[N-4]==hladaj[N-2])||(hladaj[N-3]==hladaj[N-4])||(hladaj[N-4]==hladaj[N-5])||(hladaj[N-4]==hladaj[N-6])||(hladaj[N-4]==hladaj[N-7]))){
                hladaj[N-4]++;
            }           


            if (hladaj[N-4]>MAXC) {
                hladaj[N-4]=hladaj[N-4]-MAXC;
                hladaj[N-5]++;

                while(((hladaj[N-4]==hladaj[N-2])||(hladaj[N-3]==hladaj[N-4])||(hladaj[N-4]==hladaj[N-5])||(hladaj[N-4]==hladaj[N-6])||(hladaj[N-4]==hladaj[N-7]))){
                    hladaj[N-4]++;
                }   

                while(((hladaj[N-5]==hladaj[N-2])||(hladaj[N-3]==hladaj[N-5])||(hladaj[N-4]==hladaj[N-5])||(hladaj[N-5]==hladaj[N-6])||(hladaj[N-5]==hladaj[N-7]))){
                    hladaj[N-5]++;
                }


                if (hladaj[N-5]>MAXC) {
                    hladaj[N-5]=hladaj[N-5]-MAXC;
                    hladaj[N-6]++;

                    while(((hladaj[N-5]==hladaj[N-2])||(hladaj[N-3]==hladaj[N-5])||(hladaj[N-4]==hladaj[N-5])||(hladaj[N-5]==hladaj[N-6])||(hladaj[N-5]==hladaj[N-7]))){
                        hladaj[N-5]++;
                    }

                    while(((hladaj[N-6]==hladaj[N-2])||(hladaj[N-3]==hladaj[N-6])||(hladaj[N-4]==hladaj[N-6])||(hladaj[N-5]==hladaj[N-6])||(hladaj[N-6]==hladaj[N-7]))){
                        hladaj[N-6]++;
                    }

                    if (hladaj[N-6]>MAXC) {
                        hladaj[N-6]=hladaj[N-6]-MAXC;
                        hladaj[N-7]++;

                        while(((hladaj[N-6]==hladaj[N-2])||(hladaj[N-3]==hladaj[N-6])||(hladaj[N-4]==hladaj[N-6])||(hladaj[N-5]==hladaj[N-6])||(hladaj[N-6]==hladaj[N-7]))){
                            hladaj[N-6]++;
                        }


                        while(((hladaj[N-7]==hladaj[N-2])||(hladaj[N-3]==hladaj[N-7])||(hladaj[N-4]==hladaj[N-7])||(hladaj[N-5]==hladaj[N-7])||(hladaj[N-6]==hladaj[N-7]))){
                            hladaj[N-7]++;
                        }

                        if (hladaj[N-7]>MAXC) {
                            hladaj[N-7]=MAXC;
                            return true;                                    
                        }                                   
                    }
                }                   
            }               
        }
此代码生成123456,654321如果生成此组合中的一个组合,则我需要再次生成

请你有一些想法修改我的代码或

(我需要处理所有生成的数字[6],但现在我浪费时间,因为我使用相同的数字工作了120次。)

谢谢

publicstaticvoidmain(String[]args){
int[]arr={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,44,45,46,48};
组合2(arr,7,0,新整数[7]);
}
静态无效组合2(int[]arr、int poset、int startPosition、int[]result){
如果(pocet==0){
System.out.println(Arrays.toString(result));
返回;
}       
对于(int i=起始位置;i
public static void main(String[] args){
    int[] arr = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49};
    combinations2(arr, 7, 0, new int[7]);
}

static void combinations2(int[] arr, int pocet, int startPosition, int[] result){
    if (pocet == 0){
        System.out.println(Arrays.toString(result));
        return;
    }       
    for (int i = startPosition; i <= arr.length-pocet; i++){
        result[result.length - pocet] = arr[i];
        combinations2(arr, pocet-1, i+1, result);
    }
}