leetcode 22. 括号生成
思路:回溯 递归
代码
class Solution { public: void back_track_Dfs(vector<string>&res,string path,int n,int lc,int rc) { if(rc>lc||rc>n||lc>n)//不满足条件 { return; } if(rc==lc&&lc==n)//满足条件 左括号的数量等于右括号的数量并且等于给定的数字的大小 则添加当前路径到结果中 { res.push_back(path); } //递归填充左括号 back_track_Dfs(res,path+'(',n,lc+1,rc); //递归填充右括号 back_track_Dfs(res,path+')',n,lc,rc+1); } vector<string> generateParenthesis(int n) { int lc = 0;//左括号的个数 int rc = 0;//右括号的个数 vector<string>res;//定义一个容器保存结果 back_track_Dfs(res,"",n,0,0);//递归回溯从0开始 return res; } };
以大多数人努力程度之低,根本轮不到去拼天赋~