2017-02-14 17 views
-4

У меня проблема с комбинациями.Найти все комбинации 6 номер JAVA

мне нужно увеличивать номер последнего из 6 числа, и если последнее число 50 предпоследнего приращения на 1.

У меня есть этот код, найти все перестановки. Но мне нужны комбинации.

Мне нужно, если уже программа сгенерирует 1 2 3 4 5 6 никогда не генерирует комбинацию этого числа, так что 1 2 3 4 5 6 это то же самое, что и 6 5 4 3 2 1 и 6 1 2 3 4 5 ...

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

Этот код генерируют 1 2 3 4 5 6, 6 5 4 3 2 1 Если мне нужно генерировать одну из комбинаций эти комбинации не генерируют снова.

Пожалуйста, у вас есть какие-то идеи изменить свой код или ...

(мне нужно все сгенерированного числа [6] обработано, но теперь я тратить время, потому что я работаю в 120 раз с одинаковыми номерами.)

СООБЩЕНИЕ

ответ

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