एक बैकट्रैक फ़ंक्शन बनाएं जो वर्तमान स्ट्रिंग को अपडेट करता है यदि खुले ब्रैकेट 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(); } } }
आउटपुट
{}{} {{}}