저는 Java의 데이터 구조 및 알고리즘 책에서 몇 가지 문제를 해결하기 위해 10 학년 고등학생입니다.Java의 문자열 순열 (비회원)
질문 중 하나는 문자열의 모든 순열을 인쇄하는 것입니다.
class C14
{
public static void main(char a[])
{
// char[] a = {'c','a','r','b','o','n'};
int c=0,w=0;
for(int q = 0;q<a.length;q++)
{
for(int i=0;i<a.length;i++)
{
for(int j=1;j<a.length;j++)
{
for(int k=1;k<a.length-1;k++)
{
for(int z=0;z<a.length;z++)
{
System.out.print(a[z]);
c++;
}
w++;
System.out.println();
char p=a[k+1];
a[k+1]=a[k];
a[k]=p;
}
System.out.println();
}
System.out.println();
char x=a[0];
a[0]=a[1];
a[1]=x;
}
}
System.out.println(" Character count = " + c);
System.out.println(" Word count = " + w);
}
}
이것은 내 시도입니다. 책은 'c', 'a', 'r', 'b', 'o', 'n'등의 문자를 사용하도록 요구합니다. 내 솔루션은 그렇게하지만 3 ~ 4 자의 단어를 사용하려고하면 반복됩니다. 가장 바깥 쪽 루프를 제거하고 인쇄하려고하면 3 ~ 4 자 단어로 작동하지만 5+ 단어로는 작동하지 않습니다.
나는 그것에 대한 나의 추론을 명확히하기 때문에 기쁘다. 나는 그것이 가장 효율적이지는 않다는 것을 알고 있지만, 나는 단지 10 학년이라는 사실을 명심해야한다. 그리고 이것이 내 마음에 먼저 온 것이다.
누군가 나를 도울 수 있습니까? 아니면 적어도 잘못된 것이 있습니까? 반복적으로 먼저 반복적으로 작업하기 때문에 재귀 솔루션을 권하지 마십시오. 감사합니다. Sum35. 당신이 반복
N 것들로
이 부분에 대해 - http://stackoverflow.com/questions/11915026/permutations-of-a-string-using-iteration? –
응답 해 주셔서 감사합니다. 고맙습니다. 하지만 문제는 StringBuilder 및 하위 문자열 함수 등을 사용할 수 있다고 생각하지 않습니다. (허용되지 않음) –
'a'크기가 변경 될 때마다 루프를 변경하지 않고 배열 'a'에서 순열을 수행하고 싶습니까? – John