Generate Parentheses

来源:互联网 发布:mac safari 扩展插件 编辑:程序博客网 时间:2024/06/07 00:13
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> v;    vector<string> generateParenthesis(int n) {        getresult("", n,n);        return v;    }        void getresult(string str, int l, int r)    {        if (l==0 && r==0){            v.push_back(str);            return ;        }        if (l>0)            getresult(str + '(', l-1, r);                if (r>l)            getresult(str + ')', l, r-1);    }};
0 0
原创粉丝点击