इस समस्या में, हमें एक पूर्णांक 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 − {}{}{} {}{{}} {{}}{} {{}{}} {{{}}}