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

例如,给出 n = 3,生成结果为:
[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]

思路:

递归:

#include <iostream>
#include <vector>
using namespace std;
void gen(int left,int right,string s,vector<string> &ans)
{
if(right==) {ans.push_back(s); return ;}//右括号用完前,左括号早就用完了。所以返回
else if(left==right) gen(left-,right,s+'(',ans);//剩余的左括号数量=右括号数量时,只能放左括号
else if(left==) gen(left,right-,s+')',ans);//左括号都写进s中去了,后面只能写右括号了
else {gen(left,right-,s+')',ans);//除上面几种情况外,写左写右均可
gen(left-,right,s+'(',ans);
}
} vector<string> generateParenthesis(int n) {
vector<string> ans;
gen(n,n,"",ans);
return ans;
} int main() {
int n=;
vector<string> ans;
ans=generateParenthesis(n);
cout<<ans[]<<endl;
return ;
}

#leetcode刷题之路22-括号生成的更多相关文章

  1. LeetCode刷题笔记-回溯法-括号生成

    题目描述: 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n = 3,生成结果为: [ "((()))", "( ...

  2. Leetcode之回溯法专题-22. 括号生成(Generate Parentheses)

    Leetcode之回溯法专题-22. 括号生成(Generate Parentheses) 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n ...

  3. #leetcode刷题之路32-最长有效括号

    给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度. 示例 1:输入: "(()"输出: 2解释: 最长有效括号子串为 "()"示 ...

  4. #leetcode刷题之路20-有效的括号

    #include <iostream> #include <string> #include <stack> using namespace std; bool i ...

  5. python -- leetcode 刷题之路

    第一题 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数. 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nums = [2, 7, 11, 15], tar ...

  6. 使用Java+Kotlin双语言的LeetCode刷题之路(三)

    BasedLeetCode LeetCode learning records based on Java,Kotlin,Python...Github 地址 序号对应 LeetCode 中题目序号 ...

  7. 使用Java+Kotlin双语言的LeetCode刷题之路(二)

    BasedLeetCode LeetCode learning records based on Java,Kotlin,Python...Github 地址 序号对应 LeetCode 中题目序号 ...

  8. 使用Java+Kotlin双语言的LeetCode刷题之路(一)

    LeetCode learning records based on Java,Kotlin,Python...Github 地址 序号对应 LeetCode 中题目序号 1 两数之和 给定一个整数数 ...

  9. #leetcode刷题之路40-组合总和 II

    给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合.candidates 中的每个数字在每个组合中只能使用一次.说 ...

随机推荐

  1. 如何正确地在SOE中输出日志信息

    ArcGIS for Server提供完善的日志管理机制,用于日志的记录.查询和自动清除.开发人员在开发编写SOE代码时,应该采用该机制进行日志记录的输出.如果不采用该机制,输出的日志消息会写到Arc ...

  2. Install MySQL on Mac

    1. 可参考此文章:http://www.cnblogs.com/macro-cheng/archive/2011/10/25/mysql-001.html 2. 目前MySQL(我用的mysql 5 ...

  3. Android ImageSpan的使用

    编辑框中加图片 代码如下: mSubjectDetailView = (TextView) findViewById(R.id.subject_detail); CharSequence text = ...

  4. Android适配--百分比的适配

    首先,需要添加com.android.support:percent:24.1.1 包,版本随意. dependencies { compile fileTree(dir: 'libs', inclu ...

  5. RHEL生命周期管理 -- Should I stay, or should I go?

    1. RHEL的支持策略是怎么样的? 标准支持(一般7年)+ 延长支持(3年) 2. 升级RHEL的好处有哪些? More advantageous to upgrade completely to ...

  6. c# 设计模式 之:工厂模式之---工厂模式

    1.uml类图: 实现和依赖关系: 实现: SportFactory.JeepFactory.HatchbackFactory 实现 IFactory 接口 SportCar.JeepCar.Hatc ...

  7. [NCH 1, 3]

    Preview: 1. Implement strStr() O(m*n): class Solution { public: int strStr(string haystack,string ne ...

  8. ASC日志保存时间更改

    连接到数据库,选择 OperationsManagerAC,修改dtConfig表即可,新建查询: select * from dtConfig Update dtConfig set value=2 ...

  9. 性能调优的本质、Spark资源使用原理和调优要点分析

    本课主题 大数据性能调优的本质 Spark 性能调优要点分析 Spark 资源使用原理流程 Spark 资源调优最佳实战 Spark 更高性能的算子 引言 我们谈大数据性能调优,到底在谈什么,它的本质 ...

  10. ZT android -- 蓝牙 bluetooth (五)接电话与听音乐

    android -- 蓝牙 bluetooth (五)接电话与听音乐 分类: Android的原生应用分析 2013-07-13 20:53 2165人阅读 评论(9) 收藏 举报 蓝牙android ...