生成所有括号匹配情况 Generate Parentheses

来源:互联网 发布:com.mysql.jdbc.driver 编辑:程序博客网 时间:2024/05/29 09:33

题目源自于leetcode。

题目: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:
"((()))", "(()())", "(())()", "()(())", "()()()"


解法:依然采用的递归思想来遍历所有可能的状态子空间。


代码:

class Solution {public:vector<string> generateParenthesis(int n) {// IMPORTANT: Please reset any member data you declared, as// the same Solution instance will be reused for each test case.vector<string> s;fun(s, "", 0, n);return s;}void fun(vector<string> &s, string result, int stack, int left){if(stack ==0 && left == 0){s.push_back(result);return;}if(left > 0){if(stack==0){fun(s, result+'(', stack+1, left-1);}else{fun(s, result+'(', stack+1, left-1);fun(s, result+')', stack-1, left);}}else{if(stack>0){fun(s, result+')', stack-1, left);}}}};


原创粉丝点击