如何使用golang求出将n堆石子合并成一堆的最小得分
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,本篇内容主要讲解"如何使用golang求出将n堆石子合并成一堆的最小得分",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何使用golang求出将n堆石子合
千家信息网最后更新 2025年11月07日如何使用golang求出将n堆石子合并成一堆的最小得分
本篇内容主要讲解"如何使用golang求出将n堆石子合并成一堆的最小得分",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何使用golang求出将n堆石子合并成一堆的最小得分"吧!
代码用golang编写。代码如下:
package mainimport ( "fmt" "math")func main() { arr := []int{ 1, 4, 2, 3} ret := StoneMerge(arr) fmt.Println(ret)}func sum(arr []int) []int { N := len(arr) s := make([]int, N+1) s[0] = 0 for i := 0; i < N; i++ { s[i+1] = s[i] + arr[i] } return s}func w(s []int, l int, r int) int { return s[r+1] - s[l]}func StoneMerge(arr []int) int { if len(arr) < 2 { return 0 } N := len(arr) s := sum(arr) dp := make([][]int, N) for i := 0; i < N; i++ { dp[i] = make([]int, N) } best := make([][]int, N) for i := 0; i < N; i++ { best[i] = make([]int, N) } for i := 0; i < N-1; i++ { best[i][i+1] = i dp[i][i+1] = w(s, i, i+1) } for L := N - 3; L >= 0; L-- { for R := L + 2; R < N; R++ { next := math.MaxInt64 choose := -1 for leftEnd := best[L][R-1]; leftEnd <= best[L+1][R]; leftEnd++ { cur := dp[L][leftEnd] + dp[leftEnd+1][R] if cur <= next { next = cur choose = leftEnd } } best[L][R] = choose dp[L][R] = next + w(s, L, R) } } return dp[0][N-1]}执行结果如下:
到此,相信大家对"如何使用golang求出将n堆石子合并成一堆的最小得分"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
最小
得分
石子
并成
求出
代码
内容
学习
实用
更深
兴趣
实用性
实际
操作简单
方法
更多
朋友
结果
网站
频道
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发如何制作旋钮开关
数据库系统教程高等教育出版社
个人使用云服务器能干嘛
电信网络安全培训心得
数据库基础教程读后感600
江苏国焱互联网科技有限公司电话
服务器发包机接口哪里买的
个人软件开发方法
江西省网络安全技能大赛
万里数据库杭州
软件开发发展计划书
软件开发的主要方法
重启asp调试服务器
保证银行数据库安全性
管理信息系统数据库规范化
饥荒服务器主机
东莞星荟网络技术
河南服务器硬盘多少钱
软件开发用的教科书
如何将数据库加到工程里面
携程软件开发用了多少钱
php数据库扩展
讨论网络安全的重要性英语
贵州科达网络技术有限公司
服务器app有什么用
500彩票网足彩数据库
京铁手机报网络安全
丹阳夜幌网络技术有限公司黄台
服务器光纤网卡怎么插
为什么数据库表字段要用英文