2021-09-19:数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且有效的括号组合。

福大大 答案2021-09-19:

递归。
参数1:左括号-右括号的数量。
参数2:左括号剩多少。

代码用golang编写。代码如下:

package main

import "fmt"

func main() {
n := 3
ret := generateParenthesis(n)
fmt.Println(ret)
ret2 := generateParenthesis2(n)
fmt.Println(ret2)
} func generateParenthesis(n int) []string {
path := make([]byte, n<<1)
ans := make([]string, 0)
process(path, 0, 0, n, &ans)
return ans
} // path 做的决定 path[0....index-1]做完决定的!
// path[index.....] 还没做决定,当前轮到index位置做决定! func process(path []byte, index int, leftMinusRight int, leftRest int, ans *[]string) {
if index == len(path) {
*ans = append(*ans, string(path))
} else {
// index ( )
if leftRest > 0 {
path[index] = '('
process(path, index+1, leftMinusRight+1, leftRest-1, ans)
}
if leftMinusRight > 0 {
path[index] = ')'
process(path, index+1, leftMinusRight-1, leftRest, ans)
}
}
} // 不剪枝的做法
func generateParenthesis2(n int) []string {
path := make([]byte, n<<1)
ans := make([]string, 0)
process2(path, 0, &ans)
return ans
} func process2(path []byte, index int, ans *[]string) {
if index == len(path) {
if isValid(path) {
*ans = append(*ans, string(path))
}
} else {
path[index] = '('
process2(path, index+1, ans)
path[index] = ')'
process2(path, index+1, ans)
}
} func isValid(path []byte) bool {
count := 0
for _, cha := range path {
if cha == '(' {
count++
} else {
count--
}
if count < 0 {
return false
}
}
return count == 0
}

执行结果如下:


左神java代码

2021-09-19:数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且有效的括号组合。的更多相关文章

  1. 已知一个函数rand7()能够生成1-7的随机数,请给出一个函数rand10(),该函数能够生成1-10的随机数。

    题目: 已知一个函数rand7()能够生成1-7的随机数,请给出一个函数,该函数能够生成1-10的随机数. 思路: 假如已知一个函数能够生成1-49的随机数,那么如何以此生成1-10的随机数呢? 解法 ...

  2. python小练习,打出1-100之间的所有偶数,设计一个函数,在桌面上创建10个文件,并以数字命名,复利计算函数

    练习一:打出1-100之间的所有偶数 def even_print(): for i in range(1,101): if i % 2 == 0: print (i) even_print() #列 ...

  3. GANs用于文本生成

    上学期期末老师给了我本杂志让我好好看看里面的Gans网络是如何应用在文本生成上的,文章里面也没有介绍原理性的东西,只是说了加入这个Gans模型后效果有多好,给出了模型架构图和训练时所用的语料例子,也没 ...

  4. c#用正则表达式判断字符串是否全是数字、小数点、正负号组成 Regex reg = new Regex(@"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$");

    Regex reg = new Regex(@"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][ ...

  5. 2021.12.19 eleveni的刷题记录

    2021.12.19 eleveni的刷题记录 0. 本次记录有意思的题 0.1 每个点恰好经过一次并且求最小时间 P2469 [SDOI2010]星际竞速 https://www.luogu.com ...

  6. sscanf 函数 分类: POJ 2015-08-04 09:19 4人阅读 评论(0) 收藏

    sscanf 其实很强大 分类: 纯C技术 技术笔记 2010-03-05 16:00 12133人阅读 评论(4) 收藏 举报 正则表达式stringbuffercurlgoogle 最近在做日志分 ...

  7. jQuery---钢琴案例 (按下1-9数字键,能触发对应的mouseenter事件)

    钢琴案例 (按下1-9数字键,能触发对应的mouseenter事件) 1. 结合之前的学习,主要内容,就是on注册keyup事件,函数里传入e, 用e.keyCode,来获取1-9的数字的范围. 如果 ...

  8. win10系统U盘读取不了怎么解决 三种方法快速解决&quot;文件或目录损坏且无法读取& 发布时间:2020-06-05 09:19:46 作者:佚名 我要评论

    win10系统U盘读取不了怎么解决 三种方法快速解决"文件或目录损坏且无法读取&   发布时间:2020-06-05 09:19:46   作者:佚名    我要评论 win10电脑 ...

  9. 日常Javaweb 2021/11/19

    Javaweb Dao层: //连接数据库,实现增查功能 package dao; import java.sql.Connection; import java.sql.DriverManager; ...

  10. 2021.07.19 P2294 狡猾的商人(差分约束)

    2021.07.19 P2294 狡猾的商人(差分约束) [P2294 HNOI2005]狡猾的商人 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 重点: 1.差分约束最长路与最短 ...

随机推荐

  1. ESP32 优化 IRAM 内存方法整理 ---ESP32

    有以下三种方便的方法来优化 IRAM 内存: 启用 menuconfig -> Compiler option -> Optimization Level -> Optimize f ...

  2. Python学习笔记--从继承开始继续

    继承的基础语法 单继承: 多继承:一个子类继承多个父类 pass关键字补全语法 注意事项: 复写和使用父类成员 复写父类成员 也就是相当于Java中的方法重写 调用父类成员 变量的类型注解 举例: 更 ...

  3. 通过 poe 免费使用ChatGPT、GPT-4

    poe 是由美版知乎 Quora 构建的AI 产品,提供实时在线与多个AI 机器人交流.Quora 于去年 12 月首次推出Poe 作为封闭测试版,并于2月份向所有 iOS 用户开放.支持 web 端 ...

  4. 支付回调MQ消息的幂等处理及MD5字符串es中的使用及支付宝预授权完成

    支付回调MQ消息的幂等处理及MD5字符串es中的使用及支付宝预授权完成 1.幂等的处理,根据对象的转json 转md5作为key,退款的处理 控制发送端?业务上比较难控制.支付异步通知,退款有同步通知 ...

  5. 记某gov门户网站渗透测试(已修复)

    前言: 免责声明:涉及到的所有技术仅用来学习交流,严禁用于非法用途,未经授权请勿非法渗透.否则产生的一切后果自行承担! 该渗透测试项目为已授权项目,本文已对敏感部分做了相关处理. 正文: SQL注入( ...

  6. 刷爆 LeetCode 周赛 339,贪心 / 排序 / 拓扑排序 / 平衡二叉树

    本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 大家好,我是小彭. 上周末是 LeetCode 第 339 场周赛,你参加了吗?这场周赛覆盖的知识点比较少, ...

  7. windows通过修改注册表来修改暂停更新时间

    但通过修改注册表,我们可以将这个天数修改成自己期望的,比如10年. 在小娜或者运行中输入 regedit 打开注册表编辑器,展开至 HKEY_LOCAL_MACHINE\SOFTWARE\Micros ...

  8. [数据库]MYSQL之InnoDB存储引擎 VS MYISAM存储引擎

    InnoDB VS MYISAM 参考文献 innoDB与MyISAM的区别 - Zhihu

  9. 一道名题-(csp 儒略日)的心得与技巧

    引: 如果你见到一个oi对着 4713,1582 146097 2299160 颠颠地笑,不用怀疑,他是在做那道名题--<csp-s2020 T1 儒略日> 这道题,我做了三年,平均每年做 ...

  10. .NET CORE 部署到IIS上,HTTP 错误 500.19 - Internal Server Error

    经排查,是因为项目中web.config的rewrite节点不支持,注释掉此节点即可,或者尝试下载相关依赖以支持此节点