У меня есть какой то массив со словами, который я сортирую по длине. Хочу сделать так, что бы на выходе он выдавал все возможные перестановки. Что я имею ввиду:
1) Дано String[] tst = {"H","G","HHHhh","HGFD"}
2) Что могу пока = {"H","G","HGFD","HHHhh"} - сортировка по длине
3) Хочу получить = {"H","G","HGFD","HHHhh"} - Первый ответ
= {"G","H","HGFD","HHHhh"} - Второй ответ
Как мне лучше подойти к этой проблеме ? С чего начать ?
public class Tetst {
public static void main(String[] args){
String[] strArray = {"Agar", "Hefo", "Baraa", "aaa", "baaalbal"};
for(int i = 0; i < strArray.length; i++){
for(int j = 0; j < strArray.length - 1 - i; j++){
if(strArray[j].length() > strArray[j + 1].length()){
String str = strArray[j];
strArray[j] = strArray[j + 1];
strArray[j + 1] = str;
}
}
}
for(String s : strArray){
System.out.println(s);
}
}
}
Начните с подхода в лоб. У вас есть N элементов. Это значит на первом месте у вас может быть любой из них. На втором - любой из них, кроме того, что сейчас стоит на первом месте. На третьем любой из них, кроме двух, которые попали на 1 и 2 место. Первое что просится - рекурсивная функция. Она принимает в себя набор всех значений и текущий набор, длинной меньше или равной общему.
f(all, current){
if(all.size == current.size){
print(current);
return;
}
for(o in all){
current.add(o);
f(all.current);
current.remove(o);
}
}
Раз уж вы ставите вопрос "с чего начать" - предположу что вы хотите все же сами решить задачу, потому остановлюсь на этом недоалгоритме на недоязыке. Оставлю вам на подумать вопросы допустимости прибавления o к current, запуска алгоритма, сохранения результатов и еще чего-нибудь
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Занимаюсь написанием автотестовНедавно стал очень сильно тормозить (работает по 3, 9, 49 минут, в зависимости от тестового стенда, когда раньше...
Есть Activity0, в которой создается обьект созданного мной класса (ToggleValues)Этот обьект настраивает всплывающее окно с EditText, кнопками OK и CANCEL, и запускает...
как написать выражение для поиска номера телефона в котором содержаться знаки "-" но не более 2 раз +5845654-20-20 true +5845654-20-20-1 false
Если я последую советам, то все apk создатьсяНо что это за ошибка? Из-за чего? Какие могут быть последствия?