社区
数据结构与算法
帖子详情
动态规划算法:合并圆形操场n堆石子,求最大和最小得分的问题
xiao88yan
2005-02-17 09:27:10
题目:
在一个圆形操场的四周摆放着n堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的两堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。试设计一个算法,计算出将n堆石子合并成一堆的最小得分和最大得分,并分析算法的计算复杂性
我对这个问题看不懂,是怎样的合并?加法吗?那最后结果总是一样的呀,谁会做,帮帮忙吧
...全文
1177
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
打赏
举报
回复
同矩阵连乘的算法差不多
Pebble Merging 在一个
圆形
操场
的四周摆放着n
堆
石子
。现要将
石子
有次序地
合并
成一
堆
。规定每次只能选相邻的2
堆
石子
合并
成新的一
堆
,并将新的一
堆
石子
数记为该次
合并
的
得分
。试设计一个算法,计算出将n
堆
石子
合并
成一
堆
的
最小
得分
和
最大
得分
。
Description 在一个
圆形
操场
的四周摆放着n
堆
石子
。现要将
石子
有次序地
合并
成一
堆
。规定每次只能选相邻的2
堆
石子
合并
成新的一
堆
,并将新的一
堆
石子
数记为该次
合并
的
得分
。试设计一个算法,计算出将n
堆
石子
合并
成一
堆
的
最小
得分
和
最大
得分
。 编程任务: 对于给定n
堆
石子
,编程计算
合并
成一
堆
的
最小
得分
和
最大
得分
。 Input 输入由多组测试数据组成。 每组测试数据输入的第1 行是正整数n,1≤n≤100,表示有n
堆
石子
。第二行有n个数,分别表示每
堆
石子
的个数。 Output 对应每组输入,输出的第1 行中的数是
最小
得分
;第2 行中的数是
最大
得分
。 Sample Input 4 4 4 5 9 Sample Output Hint 43 54
石子
合并
在一个
圆形
操场
的四周摆放着 n
堆
石子
. 现要将
石子
有次序地
合并
成一
堆
, 规定每次只能选相邻的 2
堆
石子
合并
成新的一
堆
, 并将新的一
堆
石子
数记为该次
合并
的
得分
.
Problem D:
石子
合并
(包含源程序c++) Time Limit:1000MS Memory Limit:65536K Description 在一个
圆形
操场
的四周摆放着 n
堆
石子
. 现要将
石子
有次序地
合并
成一
堆
, 规定每次只能选相邻的 2
堆
石子
合并
成新的一
堆
, 并将新的一
堆
石子
数记为该次
合并
的
得分
. 本题对于给定 n
堆
石子
, 计算
合并
成一
堆
的
最小
得分
和
最大
得分
. Input 测试用例的第 1 行是正整数 n(1 ≤ n ≤ 100)表示有 n
堆
石子
. 第二行有 n 个数, 分别表示每
堆
石子
的个数. Output 对于测试用例的输入数据, 在两行上输出结果: 其中第 1 行中的数是
最小
得分
, 第 2 行中的数是
最大
得分
. Sample Input 4 4 4 5 9 Sample Output 43 54
石子
合并
(对于给定n
堆
石子
,编程计算
合并
成一
堆
的
最小
得分
和
最大
得分
)
Problem F:
石子
合并
Time Limit:1000MS Memory Limit:65536K Total Submit:1180 Accepted:386 Language: not limited Description 在一个
圆形
操场
的四周摆放着n
堆
石子
。现要将
石子
有次序地
合并
成一
堆
。规定每次只能选相邻的2
堆
石子
合并
成新的一
堆
,并将新的一
堆
石子
数记为该次
合并
的
得分
。试设计一个算法,计算出将n
堆
石子
合并
成一
堆
的
最小
得分
和
最大
得分
。 例如,图1所示的4
堆
石,每
堆
石子
数(从最上面的一
堆
数起,顺时针数)依次为4、5、9、4。则3次
合并
得分
总和
最小
的方案为图2,
得分
总和
最大
的方案为图3。 编程任务: 对于给定n
堆
石子
,编程计算
合并
成一
堆
的
最小
得分
和
最大
得分
。 Input 输入第1 行是正整数n,1<=n<=100,表示有n
堆
石子
。 第二行有n个数,分别表示每
堆
石子
的个数。 Output 程序运行结束时,输出两行,第1 行中的数是
最小
得分
;第2 行中的数是
最大
得分
。 Sample Input 4 4 4 5 9 Sample Output 43 54
石子
合并
--在一个
圆形
操场
的四周摆放着n
堆
石子
在一个
圆形
操场
的四周摆放着n
堆
石子
。现要将
石子
有次序地
合并
成一
堆
。规定每次只能选相邻的2
堆
石子
合并
成新的一
堆
,并将新的一
堆
石子
数记为该次
合并
的
得分
。试设计一个算法,计算出将n
堆
石子
合并
成一
堆
的
最小
得分
和
最大
得分
。
动态规划 解决
石子
合并
问题
动态规划 解决
石子
合并
问题
在一个
圆形
操场
的四周摆放着n
堆
石子
。现要将
石子
有次序地
合并
成一
堆
。规定每次只 能选相邻的2
堆
石子
合并
成新的一
堆
,并将新的一
堆
石子
数记为该次
合并
的
得分
。试设计一个算法,计算出将n
堆
石子
合并
成一
堆
的
最小
得分
和
最大
得分
。 编程任务: 对于给定n
堆
石子
, 编程计算
合并
成一
堆
的
最小
得分
和
最大
得分
。
数据结构与算法
33,027
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章