#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Solution {
public:
vector<string> generateParenthesis(int n) {
if (n == 0)return { "" };
vector<vector<string>>dp(n + 1);//二维数组dp[n]代表括号对数时的有效组合
dp[0] = { "" };//初始化条件
for (int i = 1; i <= n; i++)//开始计算i组括号时的括号组合
{
for (int j = 0; j < i; j++)// 开始遍历 p q ,其中p+q=i-1 , j 作为索引
{
for (int m = 0; m < dp[j].size(); m++)// p = j 时的括号组合情况
{
for (int k = 0; k < dp[i - j - 1].size(); k++)// q = (i-1) - j 时的括号组合情况
{
string str = "(" + dp[j][m] + ")" + dp[i - j - 1][k];
dp[i].push_back(str);
}
}
}
}
return dp[n];
}
};
int main() {
Solution s;
vector<string> res = s.generateParenthesis(3);
for (int i = 0; i < res.size(); i++) {
cout << res[i] << " ";
}
return 0;
}
代码在Leecode和visual studio上都能运行成功,但是在clion上报如下错误。
注释方式有问题:// ............ 改为 // ...........//