Generate Parentheses
2015-06-10 16:09
239 查看
题目:Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.For example, given n = 3, a solution set is:
"((()))", "(()())", "(())()", "()(())", "()()()"思路:递归求解,对于输入数据n,有n个左括号,n个右括号,共2n个括号,设left为剩余的左括号个数,right为剩余的右括号个数。根据括号匹配的规则可知当left=0且right=0时,完成一个合法的排列,输出。当left>0时,打印'('。当right>0且right>left,打印‘)’。代码:#include <iostream>#include <stack>#include <vector>#include <string>using namespace std;class Solution {public:vector<string> generateParenthesis(int n) {vector<string> svec;if(n==0) return svec;string str="";generate(svec,n,n,str);return svec;}void generate(vector<string >& ret,int left,int right,string str){if(left==0&&right==0)ret.push_back(str);if(left>0)//可直接打印左括号,不影响规则{generate(ret,left-1,right,str+'(');}if(right>0&&left<right)//{generate(ret,left,right-1,str+')');}}};int main(){int num;;cin>>num;Solution s;vector<string> ret;ret=s.generateParenthesis(num);for(auto iter=ret.begin();iter!=ret.end();++iter){cout<<"\""<<*iter<<"\""<<" ";}cout<<endl;system("pause");return 0;}
相关文章推荐
- [数据集]新浪微博数据集MicroblogPCU
- 使用RMAN恢复目录
- 连接oracle时localhost可以ip地址不可以
- C语言 打印从根节点到叶节点的所有路径
- linux系统下用到的小知识点积累
- [Python]网络爬虫(二):利用urllib2通过指定的URL抓取网页内容
- forward 和 redirect 的区别?
- linux安装mysql,设置远程访问权限
- SICP 1.20经验
- Java序列化
- 1-4CMYK色彩模式
- 测试人员如何在scrum团队中高效协作?
- OOAD 学习笔记 二
- hibernate学习笔记之一(JDBC回顾-ORM规范)
- Linux-C成长之路(六)Linux C编程实战之路 函数要义
- Build 2015 Beijing & Windows 10 China Geek Challenge
- 1-3图像通道
- LeetCode之“动态规划”:Word Break && Word Break II
- LINUX经常使用命令详解
- 类的声明和实现