एक बैकट्रैक फ़ंक्शन बनाएं जो वर्तमान स्ट्रिंग को अपडेट करे यदि ओपन ब्रैकेट n से कम हैं या क्लोज ब्रैकेट ओपन ब्रैकेट से कम हैं। जब वर्तमान स्ट्रिंग की लंबाई 2*n के बराबर हो जाए, तो इसे संयोजन परिणाम ऐरे में जोड़ें। इसे केवल रखे गए { } की संख्या को ट्रैक करके सरलता से किया जा सकता है। हम एक ओपनिंग ब्रैकेट शुरू कर सकते हैं यदि हमारे पास रखने के लिए अभी भी एक बचा है। और हम एक क्लोजिंग ब्रैकेट शुरू कर सकते हैं यदि यह ओपनिंग ब्रैकेट की संख्या से अधिक नहीं होगा।
उदाहरण
using System; using System.Collections.Generic; using System.Text; using System.Linq; namespace ConsoleApplication{ public class BackTracking{ public void Brackets(){ char[] arr = new char[4]; FindSequence(arr, 0, 2, 0, 0); } private static void FindSequence(char[] arr, int index, int N, int openBracket, int closeBracket){ if (closeBracket == N){ StringBuilder s = new StringBuilder(); for (int i = 0; i < arr.Length; i++){ s.Append(arr[i]); } Console.WriteLine(s); s = null; return; } else{ if (openBracket > closeBracket){ arr[index] = '}'; FindSequence(arr, index + 1, N, openBracket, closeBracket + 1); } if (openBracket < N){ arr[index] = '{'; FindSequence(arr, index + 1, N, openBracket + 1, closeBracket); } } } } class Program{ static void Main(string[] args){ BackTracking b = new BackTracking(); b.Brackets(); } } }
आउटपुट
{}{} {{}}