এই সমস্যায়, আমাদের একটি পূর্ণসংখ্যা n দেওয়া হয়েছে। আমাদের কাজ হল সমস্ত সম্ভাব্য জোড়া n সুষম বন্ধনী প্রিন্ট করা।
সুষম বন্ধনী বন্ধনী জোড়া হল প্রতিটি প্রাসঙ্গিক খোলার প্রতীকের জন্য একটি বন্ধ চিহ্ন রয়েছে। এছাড়াও, জোড়া সঠিকভাবে নেস্ট করা উচিত।
সমস্যাটি বোঝার জন্য একটি উদাহরণ দেওয়া যাক,
Input: n = 2 Output: {}{} {{}}
এই সমস্যা সমাধানের জন্য, আমাদের বন্ধনীর জোড়ার ট্র্যাক রাখতে হবে। বন্ধনীর প্রাথমিক গণনা হল 0। তারপরে আমরা পুনরাবৃত্তভাবে একটি ফাংশন করব যতক্ষণ না মোট বন্ধনী গণনা n-এর থেকে কম হয়। বন্ধনী গণনা করুন, গণনার উপর ভিত্তি করে বন্ধনীর জন্য বারবার কল করুন। যদি খোলার বন্ধনীর সংখ্যা বন্ধের চেয়ে বেশি হয়, তাহলে বন্ধ বন্ধনীগুলি রাখুন এবং তারপরে জোড়ার অবশিষ্ট সংখ্যার জন্য যান, যদি খোলার বন্ধনীটি n-এর থেকে কম হয় তবে অবশিষ্ট বন্ধনী জোড়াগুলির জন্য পুনরাবৃত্তিমূলকভাবে কল করুন৷
উদাহরণ
নিচের কোডটি আমাদের সমাধানের বাস্তবায়ন দেখান,
# include<iostream> using namespace std; # define MAX_COUNT 100 void printParenthesesPairs(int pos, int n, int open, int close){ static char str[MAX_COUNT]; if(close == n) { cout<<str<<endl; return; } else { if(open > close) { str[pos] = '}'; printParenthesesPairs(pos+1, n, open, close+1); } if(open < n) { str[pos] = '{'; printParenthesesPairs(pos+1, n, open+1, close); } } } int main() { int n = 3; cout<<"All parentheses pairs of length "<<n<<" are:\n"; if(n > 0) printParenthesesPairs(0, n, 0, 0); getchar(); return 0; }
আউটপুট
All parentheses pairs of length 3 are − {}{}{} {}{{}} {{}}{} {{}{}} {{{}}}