ধরুন আমাদের একটি মান 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
আউটপুট
["(((())))", "((()()))", "((())())", "((()))()", "(()(()))", "(()()())", "(()())()", "(())(())", "(())()()", "()((()))", "()(()())", "()(())()", "()()(())", "()()()()"]