22. Generate Parentheses C++回溯法
阿新 • • 發佈:2018-11-20
res col 條件 color 回來 com div parent limit
把左右括號剩余的次數記錄下來,傳入回溯函數。
判斷是否得到結果的條件就是剩余括號數是否都為零。
註意判斷左括號是否剩余時,加上left>0的判斷條件!否則會memory limited error!
判斷右括號時要加上i==1的條件,否則會出現重復的答案。
同樣要註意在回溯回來後ans.pop_back()
class Solution { public: void backTrack(string ans, int left, int right, vector<string>& res) { if(left==0 && right==0) { res.push_back(ans); } else { for(int i=0;i<2;i++) { if(i==0 && left>0) { ans.push_back(‘(‘); backTrack(ans,left-1,right,res); ans.pop_back(); }else { if(i == 1 && right>left && right>0) { ans.push_back(‘)‘); backTrack(ans,left,right-1,res); ans.pop_back(); } } } } } vector<string> generateParenthesis(int n) { vector<string> res; string ans; backTrack(ans,n,n,res); return res; } };
22. Generate Parentheses C++回溯法