- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话: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)。从小渊传到小轩的纸条只可以向下或者向右传递,从小轩传给小渊的纸条只可以向上或者向左传递。 在活动进行中,小渊希望给小轩传递一张纸条,同时希望小轩给他回复。班里每个同学都可以帮他们传递,但只会帮他们一次,也就是说如果此人在小渊递给小轩纸条的
您可能关注的文档
- 人才九宫格模型应用分析.ppt
- 加氢裂化装置技术问答解析.doc
- 加油站油气回收改造工程验收专用设备YQJY-1解析.doc
- 人才服务外包分析.ppt
- 人才测评的理论与实践分析.ppt
- 人影业务系统构成介绍分析.ppt
- 人教化学必修1课后习题及参考答案分析.doc
- 人教B高中数学选修1-2全套ppt课件:1.1.2回归分析分析.ppt
- 人教六年级上册我的伯父鲁迅先生ppt分析.ppt
- 人教四年级语文上学期课内阅读训练及答案分析.ppt
- 人教版-物理-九年级-第十三章内能-第1节分子热运动-栾志欣-课件分析.ppt
- 人教新课标版高中历史必修二课件:第一单元第2课古代手工业的进步(共50张PPT)分析.ppt
- 人教新课标版三年级语文上册《一幅名扬中外的画》分析.ppt
- 动态过载实验解析.ppt
- 人教版2011一年级上册数学单元教学计划分析.doc
- 人教版-物理-八年级-第九章-压强-第2节-液体的压强课件-肖鹏分析.ppt
- 人教版2014年地理中考模拟试题分析.doc
- 人教版(新目标)七年级上StarterUnit1(period2)课件ppt分析.ppt
- 动态链接库解析.ppt
- 人教版2016秋季最新一年级语文第七单元教案分析.doc
文档评论(0)