社区
数据结构与算法
帖子详情
动态规划算法:合并圆形操场n堆石子,求最大和最小得分的问题
xiao88yan
2005-02-17 09:27:10
题目:
在一个圆形操场的四周摆放着n堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的两堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。试设计一个算法,计算出将n堆石子合并成一堆的最小得分和最大得分,并分析算法的计算复杂性
我对这个问题看不懂,是怎样的合并?加法吗?那最后结果总是一样的呀,谁会做,帮帮忙吧
...全文
1104
11
打赏
收藏
动态规划算法:合并圆形操场n堆石子,求最大和最小得分的问题
题目: 在一个圆形操场的四周摆放着n堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的两堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。试设计一个算法,计算出将n堆石子合并成一堆的最小得分和最大得分,并分析算法的计算复杂性 我对这个问题看不懂,是怎样的合并?加法吗?那最后结果总是一样的呀,谁会做,帮帮忙吧
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jettylee
2005-03-01
打赏
举报
回复
不就是矩阵连乘的算法就行了么
galois_godel
2005-03-01
打赏
举报
回复
好像有个复杂的贪心做法
xiao88yan
2005-02-27
打赏
举报
回复
up
zengwujun
2005-02-24
打赏
举报
回复
mark
好有意思呀
rickone
2005-02-24
打赏
举报
回复
最小分跟huffman最小生成树是同一个原理,算法就是最小生成树算法,把权最小的先合并,并把和做为新堆的权,重复合并,最后生成一棵树,根部的权就是得的分。
最大分也应该类似,致于证明我不知道,mathe提到矩阵的乘法,我到想试试怎么证明这个方法的正确性了。
mmmcd
2005-02-24
打赏
举报
回复
确实跟矩阵连乘的算法差不多
akademi
2005-02-19
打赏
举报
回复
比如有3堆,石子个数分别为1,2,3
那么先合并1,2堆,再与第3堆合并的得分是(1+2)+(3+3)=9
先合并2,3堆,再与第1堆合并的得分是(2+3)+(5+1)=11
应该懂了吧……
f[i,j]表示从第i个起接下来j个合并的的最大值d[i,j]表示第i到第j个的价值和
则f[i,j]=max{[i,k]+f[i+k,j-k]+d[i,j]}
f[i,1]=0
xiao88yan
2005-02-18
打赏
举报
回复
mathe() :
我不明白的是,如果是加法运算的话,最后得分总是一样的
languagec
2005-02-17
打赏
举报
回复
xiao88yan
2005-02-17
打赏
举报
回复
up
mathe
2005-02-17
打赏
举报
回复
同矩阵连乘的算法差不多
动态规划 解决
石子
合并
问题
动态规划 解决
石子
合并
问题
在一个
圆形
操场
的四周摆放着n
堆
石子
。现要将
石子
有次序地
合并
成一
堆
。规定每次只 能选相邻的2
堆
石子
合并
成新的一
堆
,并将新的一
堆
石子
数记为该次
合并
的
得分
。试设计一个算法,计算出将n
堆
石子
合并
成一
堆
的
最小
得分
和
最大
得分
。 编程任务: 对于给定n
堆
石子
, 编程计算
合并
成一
堆
的
最小
得分
和
最大
得分
。
石子
合并
问题
的 动态规划解法
王晓东版 //--
石子
合并
问题
/*
问题
描述:在一个
圆形
操场
的四周摆放着n
堆
石子
,先要将
石子
有序的
合并
为一
堆
。规定每次只能选相邻的
石子
合并
成一
堆
,并将新一
堆
的
石子
数 记录为该次
合并
的
得分
。试设计一个算法,记录n
堆
石子
合并
的
最大
和
最小
得分
。 数据输入:由文件input.txt输入,第一行是正整数n,表示有n
堆
石子
。第二行有n个正整数,分别表示每
堆
石子
的个数, 结果输出:将计算结果输出到文件output.txt中,文件中第一行是
最小
得分
,第二行是
最大
得分
解题思路:类似于矩阵连乘
问题
,可以用动态规划的方法来解决: (1)定义一个n*n的数组A来存储
合并
石子
的
最小
合并
方式,由一开始的只有两
堆
石子
要
合并
慢慢向上递归得到n
堆
石子
合并
的
最小
得分
。 (2)定义另一个于A同秩的矩阵B来存储各个
合并
中间的剖分 */
stone.cpp动态规划:
合并
石子
问题
描述: 在一个
圆形
操场
的四周摆放着n
堆
石子
。现要将
石子
有次序地
合并
成一
堆
。规定每次只能选相邻的2
堆
石子
合并
成新的一
堆
,并将新的一
堆
石子
数记为该次
合并
的
得分
。试设计一个算法,计算出将n
堆
石子
合并
成一
堆
的
最小
得分
和
最大
得分
。 编程任务: 对于给定n
堆
石子
,编程计算
合并
成一
堆
的
最小
得分
和
最大
得分
。 数据输入: 第1 行是正整数n,1<=n<=100,表示有n
堆
石子
。 第二行有n个数,分别表示每
堆
石子
的个数。 结果输出: 第1 行中的数是
最小
得分
;第2 行中的数是
最大
得分
。
动态规划
石子
合并
问题
在一个
圆形
操场
的四周摆放着n
堆
石子
。现要将
石子
有次序地
合并
成一
堆
。规定每次只能选相邻的2
堆
石子
合并
成新的一
堆
,并将新的一
堆
石子
数记为该次
合并
的
得分
。试设计一个算法,计算出将n
堆
石子
合并
成一
堆
的
最小
得分
和
最大
得分
。源代码
运用动态规划的
石子
规划
问题
算法实现题3-6
石子
合并
问题
«
问题
描述: 在一个
圆形
操场
的四周摆放着n
堆
石子
。现要将
石子
有次序地
合并
成一
堆
。规定每次只 能选相邻的2
堆
石子
合并
成新的一
堆
,并将新的一
堆
石子
数记为该次
合并
的
得分
。试设计一 个算法,计算出将n
堆
石子
合并
成一
堆
的
最小
得分
和
最大
得分
。 «编程任务: 对于给定n
堆
石子
,编程计算
合并
成一
堆
的
最小
得分
和
最大
得分
。 «数据输入: 由文件input.txt提供输入数据。文件的第1 行是正整数n,1£n£100,表示有n
堆
石子
。 第二行有n个数,分别表示每
堆
石子
的个数。 «结果输出: 程序运行结束时,将计算结果输出到文件output.txt 中。文件的第1 行中的数是
最小
得 分;第2 行中的数是
最大
得分
数据结构与算法
33,007
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章