- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
动态规划陈昕昀数字三角形问题
动态规划陈昕昀 最长公共子序列问题(LCS) 字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列。给定两序列X和Y,求它们的最长公共子序列。 分析: f[i][j]记录X的前i个字符构成的串与Y 的前j个字符构成的串的LCS长度 f[i][j] = 0 if i = 0 or j = 0 = max(f[i][j-1],f[i-1][j], f[i-1][j-1]+1) if i,j0 and xi = yj = max(f[i][j-1],f[i-1][j]) if i,j0 and xi != yj : 分析: 设f[i]表示第i位数字的最长上升子序列长 度,则f[i]值只与a[j]a[i](ji)对应的子 序列有关 f[i]=max{f[j](a[j]a[i](ji))}+1 01背包问题 在n件物品取出若干件放在容量为m的背包里,每件物品的重量为w1,w2,…wn,与之相对应的价值为p1,p2,…,pn。求所能获得的最大价值。m与wi均为整数。 for (i=1;i=n;i++) for (v=m;v=w[i];v--) f[v]=max(f[v],f[v-w[i]]+p[i]); 完全背包问题 有n种物品和一个容量为m的背包,每种物品都有无限件可用。第i种物品的重量是wi,价值是pi。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 容易想到的方程: f[v]=max{f[v-k*wi]+k*pi{0=k*w= v} for (i=1;i=n;i++) for (v=w[i];v=m;v++) f[v]=max(f[v],f[v-w[i]]+p[i]); 分析: 方法一: 以演讲任务为阶段。 对演讲结束时间进行升序排列,使之有序。 f[i]:第i个演讲举行后教室最长的使用时间。 POJ2228 Naptime 题意:有头牛喜欢睡觉,一天被其分成了n(3=n=3830)份,它可以选择至多m份(2=mn)进行睡觉。每个时间段睡觉所得的收益(非负)不同,且它每次睡觉都必须花一份时间来入睡(算在m中,但是却没有收益),每天被视为一个环,即如果第n份没有在入睡或者熟睡状态,第一份时间就不能是熟睡状态,求最大收益。 f[i][j][k]表示前i个阶段,睡了j个时间 段,且第i个时间段没睡(k=0)或在睡(k=1)。 考虑1与n不相邻的情况 f[i][j][0]=max{f[i-1][j][0],f[i-1][j][1]} f[i][j][1]=max{f[i-1][j-1][1]+a[i],f[i-1][j-1][0]} 总结 动态规划算法设计步骤: 1、分析问题的最优解,找出最优解的性质,并刻画其结构特征; 2、递归地定义最优值; 3、采用自底向上的方式计算问题的最优值; 4、根据计算最优值时得到的信息,构造最优解。 数字三角形问题 给定一个具有n层的数学三角形如下图,从顶至底有多条路径,每一步可沿左斜线向下或沿右斜线向下,路径所经过的数字之和为路径得分,请求出最小路径得分。 2 6 2 1 8 4 1 5 6 8 分析: 考虑第i层与第i+1层的关系 设f[i,j]表示第i层,第j列位置上的最小路径得分 则f[i,j]=min{f[i+1,j],f[i+1,j+1]}+a[i,j] 网格路线问题 给出一个n行m列的网格,左下角坐标为(1,1),右上角坐标(n,m),一个物体从左下角开始只能沿着向上或向右的方向前进到下一个结点,问 从(1,1)出发,到(n,m)共有多少条路径? ? (n,m) ? ? ? (1,1) ? ? ? ? ? ? ? ? ? ? ? ? ? ? 分析: 到每一个点的路径总条数只由到它的左边和下面的点的路径条数决定 f[x][y]=f[x-1][y]+f[x][y-1] ? ? ? 总结: 数字三角形问题——目的:求得最优解 网格路线问题——目的:统计可行解 共同点: (1)具备有很明显的层次结构关系,把这种层次
文档评论(0)