[leetcode] Generate Parentheses
来源:互联网 发布:mac搜狗 工具箱 编辑:程序博客网 时间:2024/04/25 03:01
Generate Parentheses
class Solution {public: vector<string> generateParenthesis(int n) { vector<string> res; if(n>0){ generate(n,"",0,0,res); } return res; } //采用递归树的思想,当左括号数大于右括号数时可以加左或者右括号,否则只能加左括号,当左括号数达到n时,剩下全部加右括号。 void generate(int n,string s,int lf,int rg,vector<string> &res){ if(lf==n){//only can add ')' res.push_back(s.append(n-rg,')')); return; } generate(n,s+'(',lf+1,rg,res);//add '(' if(lf>rg){ generate(n,s+')',lf,rg+1,res);//add ')' } }};
class Solution {public: void help(int n,int x,int y,string now,vector<string> &answer){//dfs if(y==n){ answer.push_back(now); return; } if(x<n){ help(n,x+1,y,now+"(",answer);//加入左括号 } if(x>y){ help(n,x,y+1,now+")",answer);//加入右括号 } } vector<string> generateParenthesis(int n) { vector<string> answer; help(n,0,0,"",answer); return answer; }};
struct node{ int x,y; string now;};class Solution {public: void help(int n,vector<string> &answer){//bfs if(n==0){ answer.push_back(""); return; } node start,tmp; start.x=start.y=0; start.now=""; queue<node> q; for(q.push(start);!q.empty();q.pop()){ tmp=q.front(); node other; if(tmp.x<n){ other.x=tmp.x+1; other.y=tmp.y; other.now=tmp.now+"("; q.push(other); } if(tmp.x>tmp.y){ other.x=tmp.x; other.y=tmp.y+1; other.now=tmp.now+")"; if(other.y==n){//组合成功 answer.push_back(other.now); }else{ q.push(other); } } } } vector<string> generateParenthesis(int n) { vector<string> answer; help(n,answer); return answer; }};
0 0
- LeetCode: Generate Parentheses
- LeetCode: Generate Parentheses
- [Leetcode] Generate Parentheses
- leetcode 51: Generate Parentheses
- [LeetCode] Generate Parentheses
- Leetcode: Generate Parentheses
- LeetCode Generate Parentheses
- 【leetcode】Generate Parentheses
- [LeetCode]Generate Parentheses
- Leetcode Generate Parentheses
- LeetCode-Generate Parentheses
- LeetCode: Generate Parentheses
- LeetCode - Generate Parentheses
- LeetCode 22: Generate Parentheses
- LeetCode: Generate Parentheses
- Leetcode: Generate Parentheses
- 【leetcode】Generate Parentheses
- Leetcode: Generate Parentheses
- 第十二周项目一——程序阅读(4)
- FFmpeg源代码简单分析:常见结构体的初始化和销毁(AVFormatContext,AVFrame等)
- 交换机和路由器的区别
- J2EE规范标准
- 关于人工智能的一些思考~
- [leetcode] Generate Parentheses
- RC5_C语言代码
- Android学习之ListView控件
- jsp表单提交接收到数据乱码
- android学习十三(android的通知使用)
- jsp 中的会话跟踪技术
- FieldType 元素(字段类型)
- POJ 1523 割点
- NESASM教程——第八天——比较