【题解】
一道傻逼回溯法。 每次都有两个选择,加个左括号。 加个右括号。无非加个判断啥时候不能加右括号了。【代码】
class Solution {
public:
vector<string> ans;
void dfs(int rest,int cur,string state){
if (cur>rest) return;
if (rest==0 && cur==0){
ans.push_back(state);
}
if (cur>0){
dfs(rest-1,cur-1,state+")");
}
dfs(rest,cur+1,state+"(");
}
vector<string> generateParenthesis(int n) {
ans.clear();
dfs(n,0,"");
return ans;
}
};