用C++打印所有平衡括号的组合
在这个问题中,我们给定一个整数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 − {}{}{} {}{{}} {{}}{} {{}{}} {{{}}}
广告