문자열의 모든 순열을 인쇄하려고합니다. 그러나 최선의 노력에도 불구하고 필자의 코드에 필요한 출력을 얻을 수 없습니다. 누군가 내 코드에 어떤 문제가 있는지 설명 할 수 있습니까? 나는 이것을 여러 시간 동안 시도해 왔으며 비참하게 실패했다.문자열의 모든 조합을 인쇄 할 때 역 추적이 작동하지 않습니까?
아래 코드의 출력은 : -
ABC
이 철수 대한 변경하다 함수이다 : -
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;
}
for 루프 'i ++'에서 그 증가 조건을 그대로 유지해야합니까? 'i -'일 것이 아닌가? – Omoro
n은 문자열의 시작 색인이고 l은 끝입니다. 루프는 n에서 l로 실행됩니다. 그래서, 내가 있어야합니다 + + –
당신의 코드를 시도하고 그것은 잘 작동합니다. 그것은 자체 라인에 각 순열과 함께'abc acb bac bca cba 택시'를 출력합니다. 실행중인 코드가 질문의 코드와 동일합니까? 편집 : 내 나쁜, 복사 할 때 약간의 수정을 복사, 내 대답을 참조하십시오. – walen