Я пытаюсь напечатать все перестановки строки. Но, несмотря на все мои усилия, я не могу получить требуемый результат для своего кода. Может кто-нибудь объяснить мне, что не так с моим кодом? Я пробовал это в течение многих часов и с треском провалился.
Вывод для приведенного ниже кода: -
азбука
Это функция перестановки для возврата: -
int i, l = 2;
void permute(String str, int n)
{
for(i=n;i<=l;i++)
{
if(n==l)
{
System.out.println(swap(str,n,i));
return;
}
else
permute(swap(str,n,i),n+1);
}
}
Это основная функция, которая запускает приведенный выше код:
public static void main(String args[])
{
BacktrackTest bt=new BacktrackTest();
String c="abc";
bt.permute(c,0);
}
Это код для обмена: -
String swap(String st, int s1, int s2)
{
char chr[] = st.toCharArray();
char t;
t = chr[s1];
chr[s1] = chr[s2];
chr[s2] = t;
st = String.valueOf(chr);
return st;
}
i++
таким, каким оно должно быть? Разве это не должно бытьi--
? - person Omoro   schedule 07.12.2016abc acb bac bca cba cab
для каждой перестановки в отдельной строке. Вы уверены, что код, который вы используете, совпадает с кодом в вашем вопросе? РЕДАКТИРОВАТЬ: мой плохой, я сделал небольшую модификацию при копировании, см. мой ответ. - person walen   schedule 07.12.2016