动态规划来做。
class Solution {
public:
vector<string> generateParenthesis(int n) {
vector<vector<string>> dp(n+1);
dp[0] = {""};
dp[1] = {"()"};
for(int i=2; i<=n; i++){
for(int j=0; j<i; j++){
for(string p : dp[j]){
for(string q : dp[i-j-1]){
string tmp = "("+p+")"+q;
dp[i].push_back(tmp);
}
}
}
}
return dp[n];
}
};