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