#include <iostream>
#include <vector>
#include <string>
using namespace std;
void addParen(vector<string>& res, char* str, int left, int right, int cur) //存放结果集合,临时结果,可用的'('数目,')'数目,当前结果的位置
{
if (left < 0 || right < left)
{
return;
}
if (left == 0 && right == 0) //括号使用完
{
str[cur] = 0;
res.push_back(str);
}
else
{
if (left > 0) //还有(可以使用
{
str[cur] = '(';
addParen(res, str, left-1, right, cur+1);
}
if (right > left) //(多于),可以使用)
{
str[cur] = ')';
addParen(res, str, left, right-1, cur+1);
}
}
}
int main()
{
int n;
cin >> n;
vector<string> res;
char* str = new char[2*n];
addParen(res, str, n, n, 0);
for (int i = 0; i < res.size(); i++)
{
cout << res[i] << endl;
}
return 0;
}
打印n对括号的全部有效组合
最新推荐文章于 2021-12-31 22:24:21 发布