动态规划算法.pdf
- 文档编号:3176137
- 上传时间:2022-11-19
- 格式:PDF
- 页数:3
- 大小:295.53KB
动态规划算法.pdf
《动态规划算法.pdf》由会员分享,可在线阅读,更多相关《动态规划算法.pdf(3页珍藏版)》请在冰豆网上搜索。
(1)给出N个1-9的数字(v1,v2,v3,Vn),不改变他们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量大,因为乘号和加号一共就是N-1个了,所以恰好每两个相邻数字之间都有一个符号。
并说明其具有优化子结构性质及子问题重叠性质。
例如:
N=5,K=2,5个数字分别为1、2、3、4、5,可以加成:
1*2*(3+4+5)=241*(2+3)*(4+5)=45(1*2+3)*(4+5)=45解:
假设F(N,K)为在N个数中插入K个乘号的最大值,则相应的递推式有:
F(N,K)=maxF(m,K1)=+1,其中KmN-1优化子结构:
如果F(m,K-1)不是最大值,则存在F(m,K1)(,1),使得F(N,K)(,),这样违反了假设条件,因此F(m,K-1)是最大值,即F(N,K)具有优化子结构。
子问题重叠性质举例:
F(5,2)F(4,1)F(3,1)F(2,1)F(3,0)F(2,0)F(1,0)F(2,0)F(1,0)F(1,0)算法伪代码如下:
sum0.n/定义一个新数组,用来记录数组v第一个元素到第i个元素的和,1inSum0=0;fori=0tonforj=0toKfij=0;fori=1tonsumi=sumi-1+vifori=1tonfi0=sumifori=2tont=min(i-1,K)forj=1totforh=2tois=sumi-sumk-1;fij=max(fk-1j-1*s,fij);returnfnK
(2)给定一长度为N的整数序列(a1,a2,a3,aN),将其划分成多个子序列(此问题中子序列是连续的一段整数),满足每个子序列中整数的和不大于一个数B,设计一种划分方法,最小化所有子序列中最大值的和。
说明其具有优化子结构及子问题重叠性质。
例如:
序列长度为8的整数序列(2,2,2,8,1,8,2,1),B=17,可将其划分成三个子序列(2,2,2),(8,1,8)以及(2,1),则可满足每个子序列中整数和不大于17,所有子序列中最大值的和12为最终结果。
解:
设Si表示从a1到ai这个整数序列的所有子序列最大值的最小化之和,则有相应的递推式:
Si=minSi1+ai,Sij1+maxaij1,ai其中ai-j-1+ai-j+aiB,ji-1,优化子结构性质:
若Sij1不是最小值,则存在Sij1Sij1,使得存在Si0andSumTmp+aj=LimsumTmp+=aj-1;Max=max(Max,aj-1)/max(,)求两个数的最大值,min(,)求最小值sumMin=min(sumMin,dpj-1+Max)-jdpi=sumMinreturndpN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 动态 规划 算法
![提示](https://static.bdocx.com/images/bang_tan.gif)