//递归与回溯算法:括号生成
//
//题目:给定一个数字n,生成所有有效的括号组合。
//问题函数定义:vector<string> generateParenthesis(int n)
//裁判测试程序样例:
//cpp
#include <iostream>
#include <vector>
#include <string>
using namespace std;
void generateParenthesisHelper(vector<string>& result, string current, int left, int right) {
// 如果左右括号都用完,将当前组合加入结果集
if (left == 0 && right == 0) {
result.push_back(current);
return;
}
// 添加左括号
if (left > 0) {
generateParenthesisHelper(result, current + '(', left - 1, right);
}
// 添加右括号
if (right > 0 && right > left) {
generateParenthesisHelper(result, current + ')', left, right - 1);
}
}
vector<string> generateParenthesis(int n) {
vector<string> result;
generateParenthesisHelper(result, "", n, n);
return result;
}
int main() {
int n = 3;
vector<string> result = generateParenthesis(n);
for (const string& str : result) {
cout << str << " ";
}
cout << endl;
return 0;
}
//输入样例:
//n = 3
//输出样例:
//((())) ()(()) (())() (()()) ()()()
本文介绍了如何使用递归和回溯算法解决编程问题,即给定一个整数n,生成所有有效的n对括号组合。通过`generateParenthesis`函数实现并提供了一个C++代码示例。
366

被折叠的 条评论
为什么被折叠?



