Generate Parentheses--letcode

来源:互联网 发布:知乎300txt 编辑:程序博客网 时间:2024/06/10 03:11

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:

[  "((()))",  "(()())",  "(())()",  "()(())",  "()()()"]
解法:



/**************************************************@time      2016/09/15 18:07*@place     dhu.13#.5005**************************************************/#include<iostream>#include<string>#include<vector>using namespace std;class Solution {public:    vector<string> generateParenthesis(int n)    {        vector<string> strs_v;        string str="";        int left=0;        int right=0;        creatAllStrings(strs_v,str,n,left,right);        return strs_v;    }    void creatAllStrings(vector<string>&strs_v,string str,int n,int left,int right)//递归:左递归添加“(”,有递归添加“)”    {        if(left==n)        {            cout<<endl<<str<<endl;            strs_v.push_back(str);            return;        }        if(left<n)        {            str+="(";            creatAllStrings(strs_v,str,n,left+1,right);            str.erase(str.length()-1,1);//递归一般要恢复原型        }        if(right<left)        {            str+=")";            creatAllStrings(strs_v,str,n,left,right+1);            str.erase(str.length()-1,1);        }    }};







0 0