문제

왜 이것이 올바른 수의 문자열 순열을 생성하지 않습니까? 을 위한

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;
}
도움이 되었습니까?

해결책

당신은 이미 계산 중입니다 조합 귀하의 프로그램에서. 을 위한 comb("ABC", 3) 한 가지 결과가 있어야합니다.

네가 원한다면 순열 대신 (6 가지 결과), 교체하십시오 s.Substring( i + 1 ) 재귀 함수 호출에서 s.Substring(0, i) + s.Substring(i+1).

27 개의 결과를 원한다면 간단히 통과하십시오 s 대신에 s.Substring( i + 1 ).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top