如何使用golang求出将n堆石子合并成一堆的最小得分
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,本篇内容主要讲解"如何使用golang求出将n堆石子合并成一堆的最小得分",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何使用golang求出将n堆石子合
千家信息网最后更新 2025年01月20日如何使用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安全错误
数据库的锁怎样保障安全
杭州中科软件开发
一舟分发服务器
常规网络技术厂家供应
天涯明月刀端游无法连接到服务器
dell服务器ipmi
acfun服务器
福建省网络安全工作会议
温州市网络安全
服务器交换机开发
阿里云渲染服务器上线了吗
单片机软件开发与设计
服务器怎么改成电脑主机
正当防卫4老是连不上服务器
服务器滑轨 安装
学校网络安全应急演练信息
电子网络技术学
游戏本dns服务器未响应
云南服务器代理商
湖南出货软件开发
杨浦区个性化软件开发诚信服务
深圳考试软件开发收费
aix服务器运行多少个进程
梁溪区通用软件开发代理商
深圳三国网络技术有限公司
国内上市金融软件开发公司
r中读入其他格式数据库
按照网络安全等级保护制度
网络安全大会与左江科技
嘉定区创新数据库价钱
数据库为什么同步