- 1、本文档共17页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
动态规划二动态规划二
* * 动态规划二 1、花与花瓶 有n束花从左至右依次插在m个花瓶内(1=n=m=100)。花与瓶分别用1到n与1到m的整数标识。花要按照花的标识数递增排列,不同的花插在不同的瓶子里产生不同的美学价值(-50到50之间)。求最大的美学价值。 输入: 第一行:n,m。第二行到第n+1行,每行m个数,是一个n×m的矩阵,矩阵的第i行第j列的数表示标识为i的花插在标识为j的花瓶中产生的美学价值。 输出: 一行:把n束花插在m个花瓶中,产生的最大美学价值。 样例: 输入: 3 5 7 23 -5 -24 16 5 21 -4 10 23 -21 5 -4 -20 20 输出: 53 分析: 方法一:flower11.txt A[i,j]=花i放入j瓶的美学价值。 F[i,j]=前i束花放入前j个花瓶内的最大美学价值(花i不一定必须插在瓶j内)。 计算F[I,j]有两种情况: 1): 花i放入第j个花瓶中: F[i,j]= f[i-1,j-1]+a[i,j] 2): 花i不放入第j个花瓶中,只能放在前j-1个花瓶内: F[i,j]= f[i,j-1] 动态转移方程: F[i,j]=max{f[i-1,j-1]+a[i,j],f[i,j-1]} 初始化:f[0,0]=0; f[i,0]=-9950 (1=i=n) ? 目标: f[n,m] function max(a,b:integer):integer; begin if ab then max:=a else max:=b;end; procedure work; begin fillchar(f,sizeof(f),0); for i:=1 to n do f[i,0]:=-9950; {第0列表示不能插花} for i:=1 to n do {枚举每一行:花的数量} for j:=1 to m do {枚举列:花瓶的数量} f[i,j]:=max(f[i,j-1],f[i-1,j-1] +a[i,j]); end; 时间:n*m 优化: procedure work; begin fillchar(f,sizeof(f),0); for i:=1 to n do f[i,i-1]:=-9950; for i:=1 to n do {枚举花} for j:=i to i+m-n do {枚举第i束花可放的花瓶范围i} f[i,j]:=max(f[i,j-1],f[i-1,j-1]+a[i,j]); end; 时间:n*(m-n) 分析: 方法二: a,f:array[0..maxn,0..maxm]of integer; a[i,j]表示第i束花插到第j个花瓶中的价值; f[i,j]表示第i束花插到第j个花瓶后,也就是说:第i束花插在第j个花瓶,前i-1束花插在前j-1个花瓶内所获得的价值和的最大值。 动态转移方程: f[i,j]=max{f[i-1,k] }+ a[i,j] (i-1=k=j-1) 枚举第i-1束花所在的花瓶k 初始化:f[0,0]=0; f[i,0]=-9950 (1=i=n) 目标:max{f[n,i]} (1=i=m) 2、制作唱片 你刚刚继承了n首珍贵的、没有发行的歌曲,它们由流行的演唱组Raucous Rockers录制。你的计划是选择其中一些歌曲来发行m个唱片,每个唱片至多包含t分钟的音乐,唱片中的歌曲之间不能重复。 由于你是一个古典音乐的爱好者,所以你没办法区分这些歌曲的价值,你按照下面的标准作选择: 1) 这些唱片中的歌曲必须按它们写作的顺序排序。(如果第一个唱片录制了歌曲1、3,则第二个唱片只能从4开始选择) 2)包含歌曲的总数量尽可能的多。 输入:第一行包含数值n,t,m(不大于20的整数),下面包含n首歌曲的长度,它们按写作的顺序排列,没有一首歌曲超出唱片的长度,而且不可能将所有歌曲都放在唱片中。 输出:输出应是按照标准进行选择m个唱片,所能包含的最多歌曲数目。 样例: 输入: 5 6 4 4 3 4 4 5 输出: 4 算法: 用a[i]保存第i首歌曲的长度。 D[i,j]=用1张盘可以保存i到j首歌曲之间最多的歌曲数目。 设Ans[i,j]=前i首歌用j张盘可以录制的最多数量。 状态转移方程:
您可能关注的文档
- 初二下册第四单元第二 课时备课教案初二下册第四单元第二 课时备课教案.doc
- 初二七班感恩、励志主题班会初二七班感恩、励志主题班会.ppt
- 初二人教版课程导报学案专刊1到6期答案初二人教版课程导报学案专刊1到6期答案.pdf
- 初二八班班会初二八班班会.ppt
- 初二写作指导:记叙中结合抒情和议论初二写作指导:记叙中结合抒情和议论.ppt
- 初二上英语开学第一课 PPT课件初二上英语开学第一课 PPT课件.ppt
- 初二实践(9-15)课初二实践(9-15)课.doc
- 初二八班赵宏博43号地理播报初二八班赵宏博43号地理播报.ppt
- 初二年级下学期英语阅读材料精选初二年级下学期英语阅读材料精选.doc
- 初二年级语文学法 第六讲 阅读——议论类课文初二年级语文学法 第六讲 阅读——议论类课文.ppt
文档评论(0)