Leetcode 22. 括號生成 dfs+回溯
阿新 • • 發佈:2018-12-24
給出 n 代表生成括號的對數,請你寫出一個函式,使其能夠生成所有可能的並且有效的括號組合。
例如,給出 n =3,生成結果為:
[ "((()))", "(()())", "(())()", "()(())", "()()()" ]
此題要注意新增)的數目比(的數目小且還有剩餘使才能新增。。。
當全部新增完畢時,return。
程式碼如下:
class Solution { public: vector<string> generateParenthesis(int n) { vector<string> ve; if(n==0) return ve; dfs ("",n,n,ve); return ve; } void dfs (string s,int x,int y,vector<string>&ve) { if(x==0&&y==0) { ve.push_back(s); return; } if(x) dfs (s+'(',x-1,y,ve); if(y&&y>x) dfs (s+')',x,y-1,ve); } };