木材加工——动态规划解法.ppt

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
木材加工——动态规划解法.ppt

POJ1088:滑雪 从下往上逆行 按高度排序:qsort 在A点:已经走了X步 周围点走,能走到B:从B已经可以滑Y步 X+1Y :从B可以滑X+1步 定义合适的结构 高度 X坐标 Y坐标 可向下滑的最大步骤 走到A,找B:bseach A的高度+1 A的前、后、左、右 POJ2766:最大子矩阵 题目描述 已知矩阵的大小定义为矩阵中所有元素的和。给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵。 比如,如下4 * 4的矩阵 0 -2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0 -2 的最大子矩阵是 9 2 -4 1 -1 8 这个子矩阵的大小是15。 解题思路 首先考虑一维的情况: 数列a1,a2,…,an,它的子数列定义为 s(i,j)=ai+…+aj。求最大子数列。 设b(j)=max{s(i,j),i=1,2,…,j}。那么有递推方程b(j)=max{b(j-1)+aj,aj} 然后考虑二维降一维的方法: arr[][]为原矩阵,能够把arr的第i行到第j行压缩?可以! 设a[k]=arr[i][k]+arr[i+1][k]+…+arr[j][k],k=1,2,…,n。那么a是arr第i行到第j行子矩阵的压缩。 解题思路 时间复杂度是O(n^3) 课后思考题:如果一个三维的数据立方体arr[][][],如果求它的最大子立方体? 程序设计实习2007 * g,f不是反函数。例如k = 2,原木是3,7。 程序设计实习2007 * 3 + (6 – 2)/4,5/(5-1/5)的语法树是什么? 程序设计实习2007 * s1 = s2 = s3。证明lcp(s1,s2) = lcp(s1,s3)。 令lcp(s1,s3) = p。Lcp(s1,s2) = p,否则lcp(s1,s2) p,即s1(p) s2(p)。这导致s3(p)=s1(p)s2(p) 即s3s2,矛盾。 程序设计实习2007 * 移动 影响的时钟 1 ABDE 2 ABC 3 BCEF 4 ADG 5 BDEFH 6 CFI 7 DEGH 8 GHI 9 EFHI 程序设计实习2007 * 程序设计实习 第十讲 习题评讲 本讲内容 课后作业难点题目(2道) 2009年期中考试题(2道) 课后作业其他题目(6道 ) 周末上机作业选讲(1道) POJ2774:木材加工——动态规划解法 木材厂有N根原木,它们的长度分别是一个整数. 现在想把这些木头切割成K根长度相同的小段木头.小段木头的长度要求是正整数. 请计算能够得到的小段木头的最大长度 定义函数f(x):要切割得到x根木头时,所能够获得的最大长度 定义函数g(l):从原木中最多可以切割得到g(l)个长为l的木头 则f单调减,g单调减。 (为什么?f,g是互为反函数吗?) (注意g函数的单调性是二分法的基础,即求最大的x,使得g(x)=K。) k - len - maxK - maxRest 要切割出k段 - len = f(k) - maxK = g(len) - 切完maxK根长len的木头后剩下最长木头的长度是maxRest 其中有maxRest len成立。(为什么?) int sourceBar[N]: 存储N根原木的长度 objectBar[K]:结构体 objectBar[i]的含义如下 len;要切割得到i根木头时,所能够获得的木头的最大长度 maxK; 切割成长度为len的木头时, 可切得的最大木头数量 MaxRest;切割成maxK根长度为len的木头后, 剩余原木的最大长度 注意,先确定len,再确定maxK,最后确定MaxRest。 total: 切割前N根原木的长度总和 特殊情况:Ktotal : 无法切割 int partition( int k) k==1: 终态, objectBar[1].len为切割前最长原木的长度 objectBar[1].maxK为长度为len的原木个数 objectBar[1].MaxRest为长度小于len的最长原木长度 objectBar[k-1].maxK=0 : 递归过程partition(k-1) objectBar[k-1].maxK=k: objectBar [k]与objectBar [k-1]相同 objectBar[k-1].maxKk: 确定len:objectBara[k].le

文档评论(0)

wendang_12 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档