समस्या को छोटी और सरल "उप-समस्याओं" में विभाजित किया जा सकता है, जिसे और अधिक सरल और छोटी उप-समस्याओं में विभाजित किया जा सकता है। हम प्रत्येक अंक को एक-एक करके लेते हैं और किसी भी अंक से पहुंचने योग्य सभी अंकों की गणना करते हैं, प्रत्येक अंक से पहुंचने योग्य अंकों के मानचित्रण को संग्रहीत करने के लिए मानचित्र का उपयोग करते हैं। जब अंक n-अंक बन जाए, तो गिनती को अपडेट करें।
उदाहरण
using System; using System.Collections.Generic; namespace ConsoleApplication{ public class BackTracking{ private string GetKeyPadValueBasedOnInput(string digit){ Dictionary keypad = new Dictionary(); keypad.Add("2", "abc"); keypad.Add("3", "def"); keypad.Add("4", "ghi"); keypad.Add("5", "jkl"); keypad.Add("6", "mno"); keypad.Add("7", "pqrs"); keypad.Add("8", "tuv"); keypad.Add("9", "wxyz"); return keypad.GetValueOrDefault(digit); } public void FindSequence(string currentList, string digits, List output){ if (digits.Length == 0){ output.Add(currentList); return; } else{ string digit = digits.Substring(0, 1); string letters = GetKeyPadValueBasedOnInput(digit); for (int i = 0; i < letters.Length; i++){ char letter = GetCHarFromString(letters, i); FindSequence(currentList + letter, digits.Substring(1), output); } } } private char GetCHarFromString(string letters, int value){ char[] charArr = letters.ToCharArray(); return charArr[value]; } } class Program{ static void Main(string[] args){ BackTracking b = new BackTracking(); List<string> output = new List<string>(); b.FindSequence("", "34", output); foreach (var item in output){ Console.WriteLine(item); } } } }
आउटपुट
dg dh di eg eh ei fg fh fi