括号生成
题目描述1
代码
c++
java
python
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Solution {
public:
void backtrack(vector<string>& ans, string& cur, int open, int close, int n) {
if (cur.size() == n * 2) {
ans.push_back(cur);
return;
}
if (open < n) {
cur.push_back('(');
backtrack(ans, cur, open + 1, close, n);
cur.pop_back();
}
if (close < open) {
cur.push_back(')');
backtrack(ans, cur, open, close + 1, n);
cur.pop_back();
}
}
vector<string> generateParenthesis(int n) {
vector<string> result;
string current;
backtrack(result, current, 0, 0, n);
return result;
}
};
int main() {
Solution solution;
vector<string> result = solution.generateParenthesis(3);
vector<string>::iterator it;
for (it = result.begin(); it != result.end(); it++) {
cout << *it <<endl;
}
}