2015-08-09 2 views
0

Я видел вызов программирования для статьи, и, думая о способе ее решения, я понял, что цифры без повторяющихся цифр могут быть первым шагом.Java: Создайте список номеров без повторения цифр?

Я написал это самостоятельно, и я хочу знать, является ли это хорошим способом генерации этих чисел!

Вот мой код:

int limit = 1000; 

for(int i = 0; i < limit; i++){ 
    boolean ignore = false; 
    for(int j = i; j > 0; j/=10){ 
     if(ignore == true) break; 
     for(int k = j/10; k > 0; k/=10){ 
      if(j%10 == k%10){ 
       ignore = true; 
       break;       
       }      
      }    
     } 
    } 
} 
+2

Не уверен, что если этот вопрос принадлежит здесь или на [Обзор Code] (http://codereview.stackexchange.com/). – PakkuDon

+2

Я только смутно взглянул на ваш код, и я не знаю много Java, но я подозреваю, что правильное решение включает в себя комбинаторика (https://en.wikipedia.org/wiki/Combinatorics) и не генерирует все числа и отфильтровывать те, которые вы не хотите. – NightShadeQueen

+0

@NightShadeQueen Я читал wiki-страницу. означает ли это, что существует какая-то формула, которая генерирует эти числа? –

ответ

1

Попробуйте

public static void main(String[] args) { 
    for(int i=1;i<1000;i++){ 
     if(check(i)) 
      System.out.println(i); 
    } 
} 
static boolean check(int num){ 
    int dig=-1; 
    boolean flg=true; 
    while(num/10 >0){ 
     if(dig==num%10){ 
      flg=false; 
      break; 
     } 
     dig=num%10; 
     num=num/10; 
    } 
    if(dig==num) 
     flg=false; 
    return flg; 
} 
Смежные вопросы