LeetCode: Generate Parentheses

来源:互联网 发布:aso优化 app排名 编辑:程序博客网 时间:2024/06/04 20: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:

[
“((()))”,
“(()())”,
“(())()”,
“()(())”,
“()()()”
]

这是一个生成括号的问题。给出n对括号,要求生成不同搭配组合的括号。要找出所有满足条件的解,可以用深搜算法,用递归来实现,算法复杂度为o(2^n)。由于左括号一定优先于右括号,算法执行时按先给左括号,然后在确定已给的左括号大于右括号的情况下,再给右括号。代码:

class Solution {public:    //递归过程    void generate(vector<string>& result,string s,int m,int n)    {        if(m==0&&n==0) result.push_back(s);//递归结束条件        else        {            if(m!=0) generate(result,s+'(',m-1,n);//放左括号            if(m<n&&n!=0) generate(result,s+')',m,n-1);//放右括号        }    }    vector<string> generateParenthesis(int n) {        vector<string> result;        string temp="";        if(n==0) return result;        generate(result,temp,n,n);        return result;    }};
0 0
原创粉丝点击