<22>——Generate Parentheses

来源:互联网 发布:python下载后怎么使用 编辑:程序博客网 时间:2024/06/05 06:46

22、Generate Parentheses

生成括号

给定 n 对括号,请写一个函数以将其生成新的括号组合,并返回所有组合结果。

样例

给定 n = 3, 可生成的组合如下:

"((()))", "(()())", "(())()", "()(())", "()()()"

分析:

1.排列组合问题,可以使用递归按顺序添加括号,将所有可能列出(回溯法)
2.只有左括号多于右括号时才能添加左括号
3.左右括号都等于n时结束

代码:

class Solution {public:    vector<string> generateParenthesis(int n) {        vector<string> res;        dfs(res,"",n,0,0);        return res;    }    void dfs(vector<string> &res,string s,             int n,int left,int right)    {        if(left==n&&right==n)        {            res.push_back(s);            return;        }        if(left<n)    dfs(res,s+"(",n,left+1,right);        if(left>right)dfs(res,s+")",n,left,right+1);    }};


原创粉丝点击