21xrx.com
2024-11-22 03:32:54 Friday
登录
文章检索 我的文章 写文章
C++实现生成所有括号对
2023-07-13 04:07:45 深夜i     --     --
C++ 括号对 生成

括号匹配问题一直是计算机程序设计和算法研究中的一个经典问题。为了解决这一问题,C++提供了一种简单高效的算法,可以生成所有的括号对。

在C++中,我们可以通过递归方式实现该算法。首先,我们定义一个函数generateParenthesis,该函数接受一个整数n,n表示我们要生成的括号对数目。我们从空字符串开始,向该字符串中逐步加入左右括号对,直到生成的括号对的数量达到n为止。在这个递归算法中,每次加入左括号时,我们需要检查该字符后面添加右括号是否合法。当添加的右括号数量等于左括号数量时,我们可以放心的添加右括号。

以下是C++实现该算法的代码:


#include <iostream>

#include <string>

using namespace std;

void generateParenthesis(int n, string cur, int left, int right) {

  if (left == n && right == n) // 左右括号数量均为n

  if (left < n) { // 添加左括号

    cur.push_back('(');

    generateParenthesis(n, cur, left + 1, right);

    cur.pop_back();

  }

  if (right < left) { // 添加右括号

    cur.push_back(')');

    generateParenthesis(n, cur, left, right + 1);

    cur.pop_back();

  }

}

int main() {

  int n = 3;

  string cur = "";

  generateParenthesis(n, cur, 0, 0);

  return 0;

}

在上述示例程序中,我们设定要生成3对括号。运行程序后,我们将获得以下输出:


((()))

(()())

(())()

()(())

()()()

这些输出表示,程序成功生成了所有合法的三对括号。

总的来说,C++实现生成所有括号对的算法,通过递归和回溯方法实现。使用该算法的代码简单,易于理解,可以很好地为我们解决括号匹配问题。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复
    相似文章