সমস্যাটিকে ছোট এবং সাধারণ "সাব-সমস্যা"গুলিতে ভাগ করা যেতে পারে, যেগুলিকে আরও সহজ এবং ছোট উপ-সমস্যাগুলিতে ভাগ করা যেতে পারে। আমরা প্রতিটি এবং প্রতিটি অঙ্ককে এক এক করে নিই এবং যে কোনও অঙ্ক থেকে পৌঁছানো যায় এমন সমস্ত এনডিজিট গণনা করি, প্রতিটি অঙ্ক থেকে পৌঁছানো যায় এমন অঙ্কগুলির ম্যাপিং সংরক্ষণ করতে একটি মানচিত্র ব্যবহার করি। সংখ্যাটি 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