2015-05-19 3 views
0

Я искал способ перестановки слова в java и натолкнулся на этот код. Я действительно изучаю его сам и сталкиваюсь с некоторыми трудностями в понимании некоторых частей кода:Перспективные буквы слова - Требуется уточнение

  1. Во-первых, какая именно переменная: used = new boolean[ in .length()]? Я никогда не видел такого объявления логической переменной.

  2. Какова основная логика функционирования этого фрагмента?

    для (INT I = 0; я < в .length(); ++ я) { , если (используется [я]) { продолжить; } out.append (in .charAt (i)); используется [i] = true; Перестановочить(); используется [i] = false; out.setLength (out.length() - 1);

Изначально программа

public class Permutations { 
    boolean[] used; 
    StringBuffer out = new StringBuffer(); 
    String in ; 
    public Permutations(String str) { in = str; 
    used = new boolean[ in .length()]; 
    } 
    public void permute() { 
    if (out.length() == in .length()) { 
     System.out.println(out); 
     return; 
    } 
    for (int i = 0; i < in .length(); ++i) { 
     if (used[i]) { 
     continue; 
     } 
     out.append(in .charAt(i)); 
     used[i] = true; 
     permute(); 
     used[i] = false; 
     out.setLength(out.length() - 1); 
    } 
    } 
} 
+0

Один вопрос на вопрос –

+0

Не более половины этого вопроса является дубликатом упомянутого вопроса, и даже тогда эта часть содержит объявление *, а не * инициализацию *. –

+0

@JarrodRoberson я так не думаю. –

ответ

0
  1. Это массив логических значений.
  2. После того, как вы нашли неиспользуемый символ (used[i] ложно), добавьте его в out, флаг как используется (used[i]=true) & permute() то, что осталось. Как только это будет сделано, отметьте его как неиспользованный (used[i]=false) & удалите символ, который вы добавили, до out (out.setLength(out.length()-1)), поэтому ваш цикл может продолжить поиск неиспользуемых символов.
+1

@ SanchayanDutta: Вы сначала: уточните, что вы не понимаете. –

+1

@ SanchayanDutta: Я ответил, что (см. Пункт 2); какие у вас проблемы с ответом? –

+0

Было бы полезно, если бы вы могли показать мне сухой пробег ... –

Смежные вопросы