ধরুন আমাদের একটি মান n আছে। আমাদের সমস্ত সম্ভাব্য সুগঠিত বন্ধনী তৈরি করতে হবে যেখানে n নম্বর খোলা এবং বন্ধ বন্ধনী উপস্থিত থাকে। তাই যদি n =3 এর মান হয়, তাহলে বন্ধনী সেটটি হবে ["()()()","()())","(())()","(()()) ","((())"]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- genParenthesisRec() নামক পদ্ধতির সংজ্ঞা দিন। এটি বাম, ডান, টেম্প স্ট্রিং এবং ফলাফল অ্যারে নেয়। প্রাথমিকভাবে ফলাফল অ্যারে খালি
- ফাংশন genParenthesisRec, নিচের মত কাজ করবে
- যদি বামে =0 এবং ডানে :=0, তাহলে ফলাফলে টেম্প যোগ করুন এবং ফিরে আসুন
- বামে থাকলে> 0
- গেট প্যারেনথেসিস রেক(বাম – 1, ডান, টেম্প + “(”, ফলাফল)
- যদি ডানে> বাম
- গেট প্যারেনথেসিস রেক(বাম, ডান – 1, টেম্প + “)”, ফলাফল)
উদাহরণ(পাইথন)
আসুন আরও ভালোভাবে বোঝার জন্য নিচের বাস্তবায়ন দেখি −
class Solution(object): def generateParenthesis(self, n): """ :type n: int :rtype: List[str] """ result = [] self.generateParenthesisUtil(n,n,"",result) return result def generateParenthesisUtil(self, left,right,temp,result): if left == 0 and right == 0: result.append(temp) return if left>0: self.generateParenthesisUtil(left-1,right,temp+'(',result) if right > left: self.generateParenthesisUtil(left, right-1, temp + ')', result) ob = Solution() print(ob.generateParenthesis(4))
ইনপুট
4
আউটপুট
["(((())))", "((()()))", "((())())", "((()))()", "(()(()))", "(()()())", "(()())()", "(())(())", "(())()()", "()((()))", "()(()())", "()(())()", "()()(())", "()()()()"]