动态规划算法:合并圆形操场n堆石子,求最大和最小得分的问题

xiao88yan 2005-02-17 09:27:10
题目:
在一个圆形操场的四周摆放着n堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的两堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。试设计一个算法,计算出将n堆石子合并成一堆的最小得分和最大得分,并分析算法的计算复杂性

我对这个问题看不懂,是怎样的合并?加法吗?那最后结果总是一样的呀,谁会做,帮帮忙吧
...全文
1104 11 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
同矩阵连乘的算法差不多

33,007

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧