题目描述:
给出n代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。
题目解析:
本题可以采用递归方法来求解。
递归的基本要素是:【1】要有递归关系式;【2】给出递归的初始条件和终止条件
class Solution{
public:
//定义递归函数
void getRes(string str, int left, int right, vector<string>& res)
{
if(left==0&&right==0) res.push_back(str); //递归的终止条件
if(left>0) getRes(str+"(",l-1,r+1,res); //当左边括号数>0,则加入左括号,然后l-1,r+1处理
if(right>0) getRes(str+")",l,r-1,res); //当右边大于0时,l保持不变,右边插入“)”,并r-1
}
vector<string> generateParenthesis(int n){
vector<string> res; //用来保存结果
getRes("",n,0,res); //递归调用函数
return res;
}
};