在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 −

{}{}{}

{}{{}}

{{}}{}

{{}{}}

{{{}}}

以上是 在C ++中打印平衡括号的所有组合 的全部内容, 来源链接: utcz.com/z/352450.html

回到顶部