动态规划方法例题探讨.ppt

  1. 1、本文档共50页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 首先,我们要找到这个问题中的“状态”是什么? 因此为了求出到达当前格子后最多能收集到多少个苹果,我们就要先去考察那些能到达当前这个格子的格子,到达它们最多能收集到多少个苹果。 (是不是有点绕,但这句话的本质其实是DP的关键:欲求问题的解,先要去求子问题的解) * S[i][j]有两种计算方式:1.对于每一行,从左向右计算,然后从上到下逐行处理;2. 对于每一列,从上到下计算,然后从左向右逐列处理。这样做的目的是为了在计算S[i][j]时,S[i-1][j]和S[i][j-1]都已经计算出来了。 * 需要应用有哪些信誉好的足球投注网站算法求解 输入输出样例 【输入样例】 1000 5 800 2 400 5 300 5 400 3 200 2 【输出样例】 3900 分析 这是一个有微小变化的01背包问题 总钱数N可看做背包的容量,物品的价格可看作物品的重量。 优化目标:在不超过N元(可以等于N元)的前提下,使每件物品的价格与重要度的乘积的总和最大。 状态转移方程如下: f[i,j]=max{f[i-1,j-vi]+vi*pi(j=wi),f[i-1,j]} 主要程序段 for(i=0;in;i++) f[0][i]=0;//初始化最大价值数组的第0行; for(i=1;im;i++) for(j=0;jn;j++) { f[i][j]=f[i-1][j]; if ((j=v[i])(f[i-1][j-v[i]]+v[i]*p[i]f[i][j])) f[i][j]=f[i-1][j-v[i]]+v[i]*p[i]; }/*如果当前物品的价格小于总价格(j=v[i])*/ 例5 装箱问题 有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30),每个物品有一个体积(正整数)。   要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。 输入格式   第一行为一个整数,表示箱子容量;   第二行为一个整数,表示有n个物品;   接下来n行,每行一个整数表示这n个物品的各自体积。 输出格式   一个整数,表示箱子剩余空间。 蓝桥网编号:ALGO-21 VIP试题 2013-11-07 输入输出样例 样例输入 24 6 8 3 12 7 9 7 样例输出 0 分析 这是一个变形的背包问题,最优目标是:使箱子的剩余空间为最小。可转换成物品占据的容量最大。 用F[i,j]表示容量为j的箱子装入前i个物品后,物品占据的容量。则状态转移方程为: F[i,j]= max{F[i-1,j-a[i]]+a[i],F[i-1,j]} 其中a[i]表示第i个物品的体积。 主要代码段 dp[0]=0;//注意这是关键 for(i=0;in;i++) { int a; scanf(%d,a); for(j=v;j=a;j--) dp[j]=max(dp[j],dp[j-a]+a); } 收集苹果:二维的DP问题 平面上有N*M个格子,每个格子中放着一定数量的苹果。你从左上角的格子开始,每一步只能向下走或是向右走,每次走到一个格子上就把格子里的苹果收集起来,这样下去,你最多能收集到多少个苹果。 我们必须注意到的一点是,到达一个格子的方式最多只有两种:从左边来的(除了第一列)和从上边来的(除了第一行)。 分析 因此为了求出到达当前格子后最多能收集到多少个苹果,我们就要先去考察那些能到达当前这个格子(i,j)之前的格子,到达它们最多能收集到多少个苹果。 (i-1,j) (i,j-1) (i,j) A[i,j] 状态和状态转移方程 状态S[i][j]表示我们走到(i, j)这个格子时,最多能收集到多少个苹果。 那么,状态转移方程如下: S[i][j]=A[i][j] + max(S[i-1][j], if i0 ; S[i][j-1], if j0) 其中i代表行,j代表列,下标均从0开始;A[i][j]代表格子(i, j)处的苹果数量。 例6 传纸条   小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题。一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了。幸运的是,他们可以通过传纸条来进行交流。纸条要经由许多同学传到对方手里,小渊坐在矩阵的左上角,坐标(1,1),小轩坐在矩阵的右下角,坐标(m,n)。从小渊传到小轩的纸条只可以向下或者向右传递,从小轩传给小渊的纸条只可以向上或者向左传递。   在活动进行中,小渊希望给小轩传递一张纸条,同时希望小轩给他回复。班里每个同学都可以帮他们传递,但只会帮他们一次,也就是说如果此人在小渊递给小轩纸条的

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档