![在这里插入图片描述](https://img-blog.csdnimg.cn/20200416120908692.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1Mjk5MjIz,size_16,color_FFFFFF,t_70)
dfs
class Solution {
public:
void dfs(string cur,int leftnum,int rightnum,int n,vector<string>& ans){
if(leftnum>n||rightnum>n)return;
if(leftnum<rightnum)return;
if(cur.size()==2*n){
if(leftnum==n&&rightnum==n){
ans.push_back(cur);
return;
}
else{
return;
}
}
dfs(cur+"(",leftnum+1,rightnum,n,ans);
dfs(cur+")",leftnum,rightnum+1,n,ans);
}
vector<string> generateParenthesis(int n) {
vector<string> ans;
if(n==0)return ans;
dfs("",0,0,n,ans);
return ans;
}
};
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200416120940692.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1Mjk5MjIz,size_16,color_FFFFFF,t_70)
优美的dp
class Solution {
public:
vector<string> generateParenthesis(int n) {
vector<vector<string>> dp(n+1);
if(n==0) return {};
dp[0].push_back("");
for(int i=1;i<=n;i++){
for(int j=0;j<i;j++){
for(auto str_dpj:dp[j]){
for(auto str_dp_ij1:dp[i-j-1]){
string tmp="("+str_dpj+")"+str_dp_ij1;
dp[i].push_back(tmp);
}
}
}
}
return dp[n];
}
};