资源描述:
《动态规划题目及其代码》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、动态规划题目及其代码ByLYLtim1、数塔问题(tower.pas)设有一个三角形的数塔,如下图所示。顶点结点称为根结点,每个结点有一个整数数值。从顶点出发,在每一结点可以选择向左走或是向右走,一起走到底层,要求找出一条路径,使路径上的值最大。【样例输入】tower.in5 {数塔层数}1311 812 7 266 14 15 812 7 13 24 11【样例输出】tower.outmax=86【参考程序】usesmath;varn,i,j:byte; a:array[1..10,1..10]ofword; f:array[1.
2、.10,1..10]ofword;begin assign(input,'tower.in');reset(input); assign(output,'tower.out');rewrite(output); readln(n); fori:=1tondo begin forj:=1toido read(a[i,j]); readln; end; fillchar(f,sizeof(f),0); fori:=1tondof[n,i]:=a[n,i]; fori
3、:=n-1downto1do forj:=1toido f[i,j]:=max(f[i+1,j],f[i+1,j+1])+a[i,j]; writeln('max=',f[1,1]); close(input);close(output);end.2、拦截导弹(missile.pas) 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦
4、截所有的导弹。 输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。【样例输入】missile.in 38920715530029917015865 【输出样例】missile.out6(最多能拦截的导弹数)2(要拦截所有导弹最少要配备的系统数)【参考程序】typenode=record h,lens:word; end;varn,i,j,maxl,num,minsys:word; mis:array[word]
5、ofnode; sysl:array[word]ofword;begin assign(input,'missile.in');reset(input); assign(output,'missile.out');rewrite(output); whilenoteolndo begin inc(n); read(mis[n].h); mis[n].lens:=1; end; fori:=2tondo begin forj:=1toi-1do if(m
6、is[j].h>mis[i].h)and(mis[j].lens+1>mis[i].lens)then mis[i].lens:=mis[j].lens+1; ifmis[i].lens>maxlthenmaxl:=mis[i].lens; end; writeln(maxl); num:=1; sysl[0]:=maxint; sysl[1]:=mis[1].h; fori:=2tondo begin minsys:=0; forj:=1tonumdo if(sysl[j]>=m
7、is[i].h)and(sysl[j]