leetcode 22括号生成
//经过剪枝的全排列解算,
/****
1)左右括号都必须为n,即left<n,right<n;
2)必须先放置左括号才能放置右括号,即限制条件有left>right;
****/
其中left,right分别为i,j
DFS+剪枝:
class Solution { public: vector<string> generateParenthesis(int n){ vector<string> res; if(n<=0) return {}; gen(res,n); return res; } void gen(vector<string> &res,int n,int i=0,int j=0,string level=""){ if(i>=n&&j>=n){ res.push_back(level);return; } if(i<n) gen(res,n,i+1,j,level+"("); if(j<i&&j<n) gen(res,n,i,j+1,level+")"); } };