2009-04-16 7 views
-1

왜 올바른 문자열 순열 수가 생성되지 않습니까?문자열 순열 만들기

perm("ABC", 3) 

의 경우 27 개의 다른 순열을 인쇄해야합니다.

private static List<string> permutated = new List<string>(30000); 

public static List<string> perm(string s, int k) { return comb(s, "", k); } 

private static List<string> perm(string s, string prefix, int k) 
{ 
    if (k == 0) 
    { 
     permutated.Add(prefix); 
    } 
    else 
    { 
     for (int i = 0; i < s.Length; i++) 
     { 
      perm(s.Substring(i + 1), prefix + s[i], k - 1); 
     } 
    } 
    return permutated; 
} 
+0

디버깅을 시도해 본 사람이 무엇입니까? 너는 무엇을하려고 했는가? –

+1

ABC는 6 개의 순열을 가지고 있습니다. ABC, ACB, BAC, BCA, CAB, CBA –

+1

둘째로, 당신은 결코 그것을 반환하지 않고 아무것도하지 않습니다. –

답변

2

귀하는 이미 프로그램에서 combinations을 계산 중입니다. comb("ABC", 3)의 경우 결과는 하나 여야합니다.

대신 permutations (6 개의 결과)을 사용하려면 재귀 호출에서 s.Substring(i + 1)s.Substring(0, i) + s.Substring(i+1)으로 바꾸십시오.

결과가 27 개인 경우 s.Substring(i + 1) 대신 s을 전달하면됩니다.

+0

천재 야! 대단히 감사합니다! – ra170