पहली स्थिति में वर्ण ढूंढें और शेष वर्ण को पहले वर्ण के साथ स्वैप करें। जैसे ABC में, पहली पुनरावृत्ति में तीन स्ट्रिंग बनती हैं: ABC, BAC, और CBA, A को A, B और C के साथ क्रमशः स्वैप करके। शेष वर्णों के लिए चरण दोहराएं जैसे दूसरे वर्ण 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