LeetCode算法题——22. Generate Parentheses

来源:互联网 发布:淘宝旺铺装修模板 编辑:程序博客网 时间:2024/06/08 18:04
题目:

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:

[
  "((()))",
  "(()())",
  "(())()",
  "()(())",
  "()()()"
]
解题思路:
通过递归的思想,知左括号个数只要不为0就可以直接输出,而右括号个数必须大于左括号个数时才能输出,否则不符合规则

C++实现如下:

#include <iostream>#include <vector>using namespace std; class Solution {public:string s="";vector<string> res;    vector<string> generateParenthesis(int n) {    vector<string> v;        iterEveryPos(n,n);        return res;    }    void iterEveryPos(int l,int r){    if(l==0&&r==0){    res.push_back(s);    }else{        if(l>0){    s=s+"(";    iterEveryPos(l-1,r);    s=s.substr(0,s.size()-1);    }    if(r>l){    s=s+")";    iterEveryPos(l,r-1);    s=s.substr(0,s.size()-1);    }    }    }};int main(){Solution sol;vector<string> res=sol.generateParenthesis(3);for(int i=0;i<res.size();i++){cout<<res[i]<<endl;}return 0;}


0 0
原创粉丝点击