美文网首页
生成括号

生成括号

作者: 静水流深ylyang | 来源:发表于2018-12-15 23:00 被阅读0次

版权声明:本文为博主原创文章,转载请注明出处。
个人博客地址:https://yangyuanlin.club
欢迎来踩~~~~


题目

  • Generate Parentheses

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对括号,编写一个函数来生成所有的符合格式的括号组合。
上面给出了n = 3的例子。

思路

用递归来做。
注意几点递归条件:
(1)左右括号均用完是递归出口;
(2)左括号没有用完就加一个左括号;
(3)只有右括号少于左括号且右括号没有用完时才能加右括号,因为不能出现“ )( ”这样的情况。

  • 关键:当前位置左括号不少于右括号;
  • 节点:目前位置左括号和右括号数(x,y)(x>=y);
  • 边:从(x,y)到(x+1,y)和(x,y+1),x==y时,没有(x,y+1)这条边;
  • 解:是从(0,0)出发到(n,n)的全部路径。

代码

#include<iostream>
#include<vector>
using namespace std;
void help_fun(int, int, string, vector<string >&);
vector<string> generateParenthesis(int n)
{
    vector<string > v;
    help_fun(n, n, "", v);
    return v;
}
void help_fun(int x, int y, string s, vector<string > &v)
{
    if(x == 0 && y == 0)
    {
        v.push_back(s);
        return;
    }
    if(x > 0)
        help_fun(x-1, y, s+"(", v);
    if(x<y && y>0)
        help_fun(x, y-1, s+")", v);
}
int main()
{
    vector <string > v;
    int n;
    cin >> n;
    v = generateParenthesis(n);
    for(int i=0; i<v.size(); i++)
    {
        cout<<v[i]<<endl;
    }
    return 0;
}

以上。


版权声明:本文为博主原创文章,转载请注明出处。
个人博客地址:https://yangyuanlin.club
欢迎来踩~~~~


相关文章

  • LeetCode-22. 括号生成

    参考:第7课-泛型递归、树的递归 LeetCode-22. 括号生成 22. 括号生成 数字 n 代表生成括号的对...

  • HJ77 火车进站

     火车进站问题等同于括号生成[1]。 BM60 括号生成。 给出n对括号,请编写一个函数来生成所有的由n对括号组成...

  • 括号生成 (有效括号)

    题目 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例: 输入...

  • 括号生成

    给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 例如,给出 n = 3...

  • 括号生成

    描述:给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 例如,给出 n ...

  • 括号生成

    题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/gene...

  • 括号生成

    题目 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 例如,给出 n ...

  • 括号生成

    题目需求 /*** 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。* ...

  • 生成括号

    版权声明:本文为博主原创文章,转载请注明出处。个人博客地址:https://yangyuanlin.club欢迎来...

  • 括号生成

    题目描述:  给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 解题思路...

网友评论

      本文标题:生成括号

      本文链接:https://www.haomeiwen.com/subject/mtuzhqtx.html