ค้นหาอักขระในตำแหน่งแรกและสลับอักขระที่เหลือกับอักขระตัวแรก เช่นเดียวกับใน ABC ในการวนซ้ำครั้งแรกจะมีการสร้างสามสตริง:ABC, BAC และ CBA โดยการสลับ A กับ A, B และ C ตามลำดับ ทำซ้ำขั้นตอนสำหรับอักขระที่เหลือ เช่น แก้ไขอักขระตัวที่สอง B เป็นต้น Nowswap อีกครั้งเพื่อกลับไปที่ตำแหน่งก่อนหน้า จาก ABC เราสร้าง ABC โดยตรึง B อีกครั้ง และเราย้อนรอยไปยังตำแหน่งก่อนหน้าและสลับ 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