첫 번째 위치에서 문자를 찾고 나머지 문자를 첫 번째 문자로 바꿉니다. ABC와 마찬가지로 첫 번째 반복에서는 A를 A, B 및 C로 각각 교환하여 ABC, BAC 및 CBA의 세 가지 문자열이 형성됩니다. 두 번째 문자 B 고정 등과 같은 나머지 문자에 대해 단계를 반복합니다. 이제 다시 바꾸면 이전 위치로 돌아갑니다. ABC에서 B를 다시 고정하여 ABC를 구성하고 이전 위치로 되돌아가 B를 C로 바꿉니다. 이제 ABC와 ACB가 생겼습니다.
예시
using System;
namespace ConsoleApplication{
public class BackTracking{
public void StringPermutation(string word, int start, int end){
if (start == end){
Console.WriteLine(word);
}
else{
for (int i = start; i <= end; i++){
Swap(ref word, start, i);
StringPermutation(word, start + 1, end);
Swap(ref word, start, i);
}
}
}
private void Swap(ref string word, int start, int end){
char[] arr = word.ToCharArray();
char temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
word = new string(arr);
}
}
class Program{
static void Main(string[] args){
BackTracking b = new BackTracking();
b.StringPermutation("ABC", 0, 2);
}
}
} 출력
ABC ACB BAC BCA CBA CAB