用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 −
{}{}{}
{}{{}}
{{}}{}
{{}{}}
{{{}}}

更新于:2020年1月22日

687 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告