如果左括号还没用完,那么当前位置就可以是左括号; 如果右括号还没用完,并且当前左括号的数目多于右括号的数码,那么当前位置就可以是右括号。 class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 * @return string字符串vector */ vector<string> res; void help(string str,int l,int r,int n){ if(str.size()==2*n){ res.push_back(str); return ; } if(l<n){ str.push_back('('); help(str,l+1,r,n); str.pop_back(); } if(r<n&&l>r){ str.push_back(')'); help(str,l,r+1,n); str.pop_back(); } } vector<string> generateParenthesis(int n) { // write code here help("",0,0,n); return res; } };