2022年动态程序设计 .pdf
《2022年动态程序设计 .pdf》由会员分享,可在线阅读,更多相关《2022年动态程序设计 .pdf(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、例题 1求最大连续子序列的和输入:n(n500);n 个整数;输出:该序列中最大的连续子序列的和max 。$A+,B-,C+,D+,E-,F-,G+,H+,I+,J+,K-,L+,M-,N+,O+,P+,Q-,R+,S-,T-,U-,V+,W-,X+,Y+,Z1 $MINSTACKSIZE $00004000 $MAXSTACKSIZE $00100000 $IMAGEBASE $00400000 $APPTYPE GUI program ex11_1; $APPTYPE CONSOLE uses SysUtils; const infile=ex11_1.in; outfile=ex11_1
2、.out; var n,i:integer; j,m,max:longint; f,f0:text; begin / Insert user code here assign(f,infile); reset(f); assign(f0,outfile); rewrite(f0); repeat readln(f,n); read(f,m); max:=m; for i:=2 to n do begin read(f,j); if m0 then m:=m+j else m:=j; if mmax then max:=m end; writeln(f0,max) until seekeof(f
3、); close(f); close(f0) end. 例题 22 台处理机A 和 B 承担 n 个作业的任务。设第I 个作业交给机器A 处理时需要ai时间,交给机器B 处理时需要bi时间。由于各作业的特点和机器性能的关系,很可能对于某些 I 有 aibi,而对于某些作业j(j i)有 ai=b then max:=a else max:=b end; procedure search(nw:integer;na,nb:real); begin if max(na,nb)=bt then exit; if nw=n+1 then begin bt:=max(na,nb); exit end;
4、if max(na+anw,nb)=max(na,nb+bnw) then begin search(nw+1,na+anw,nb); search(nw+1,na,nb+bnw) end else begin search(nw+1,na,nb+bnw); search(nw+1,na+anw,nb) end end; begin assign(f,ex11_2.in); reset(f); assign(f0,ex11_2.out); rewrite(f0); while not seekeof(f) do begin readln(f,n); al:=0; bl:=0; for i:=1
5、 to n do begin readln(f,ai,bi); if ai=bi then al:=al+ai else bl:=bl+bi end; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 25 页 - - - - - - - - - bt:=max(al,bl); search(1,0,0); writeln(f0,bt:8:2) end; close(f); close(f0) end. 例题 3有 F 束花由左而右插在V 个花瓶内( 1FV 100) 。花
6、与瓶分别用1F 与 1V的整数标识。 花要按照花的标识数递增排列,不同的花插在不同的瓶子里产生不同的美学价值( -50 到 50 之间)。求最大的美学价值及其一种摆放方式。program ex11_3; $APPTYPE CONSOLE uses SysUtils; const infile=d:ex11_3.in; outfile=ex11_3.out; max=1000; maxint=10000; type arr=array1.maxof integer; var fn,vn,i,j,k:integer; v:array1.max,1.maxof integer; c0,c1:arra
7、y0.maxof longint; p0,p1:array0.maxof arr; ansp:arr; ans:longint; f,f0:text; function min(a,b:longint):longint; begin if ac0i-1+vi,k then begin c1i:=c0i; p1i:=p0i end else begin c1i:=c0i-1+vi,k; p1i:=p0i-1; p1i,i:=k end; if c1fnans then begin ans:=c1fn; ansp:=p1fn end; c0:=c1; p0:=p1 end; writeln(f0,
8、ans); for i:=1 to fn do writeln(f0,Flower ,i, : Vase ,anspi) until seekeof(f); close(f); close(f0) end. 例题 4有四个圆柱A,B,C,D。n 个圆盘按照由小至大的顺序摞在A 柱上 (如图 11.3.1)。如何以最少次数将圆盘从A 柱移至 D 柱图 11.3.1 移动必须满足三个条件:能利用 A, B,C,D 四个圆柱;一次只能搬动一个圆盘;小的圆盘只能往大的圆盘上摞;$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q-,R-,S+,T-,V+,X+,Y+ $M 40000
9、,0,655360 program ex11_4; const infile=ex11_4.in; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 25 页 - - - - - - - - - outfile=ex11_4.out; max=50; var n,i,j,k:integer; c3,c4:array1.maxof longint; as:array1.maxof integer; f,f0:text; procedure mv3(a,c,b:char;h,t
10、:integer); var n:integer; begin n:=h-t+1; if t ,c); mv3(b,c,a,h,t-1) end; procedure mv4(a,d,b,c:char;h,t:integer); var n:integer; begin n:=t-h+1; if th then exit; mv4(a,c,b,d,h,h+asn-1); mv3(a,d,b,h+asn,t); mv4(c,d,a,b,h,h+asn-1) end; begin assign(f,infile); reset(f); assign(f0,outfile); rewrite(f0)
11、; repeat readln(f,n); c31:=1; for i:=2 to n do c3i:=c3i-1*2+1; for k:=1 to n do begin c4k:=c3k; ask:=0; for i:=1 to k-1 do if 2*c4i+c3k-ic4k then begin c4k:=2*c4i+c3k-i; ask:=i end end; mv4(A,D,B,C,1,n); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 25 页 - - -
12、 - - - - - - writeln(f0,Total of ,n, plates: ,c4n) until seekeof(f); close(f); close(f0) end. 例题 5关系“ ”和“ =”将 3 个数 A,B和 C依序排列时,有13 种不同的序关系:A=B=C A=BC AB=C ACB ACB A=CB BA=C BAC BCA B=CA CA=B CAB CBA 若要将 n 个数依序进行排列,试设计一个算法,计算出有多少种不同的序关系。$A+,B-,C+,D+,E-,F-,G+,H+,I+,J+,K-,L+,M-,N+,O+,P+,Q-,R+,S-,T-,U-,
13、V+,W-,X+,Y+,Z1 $MINSTACKSIZE $00004000 $MAXSTACKSIZE $00100000 $IMAGEBASE $00400000 $APPTYPE GUI program ex11_5; $APPTYPE CONSOLE uses SysUtils; const infile=d:ex11_5.in; outfile=d:ex11_5.out; max=100; type arrints=record data:array1.100of longint; p:integer end; var n,i,j:integer; cn:array0.maxof a
14、rrints; a,b:arrints; c:array0.max,0.maxof arrints; f,f0:text; procedure creat(var a:arrints;n:integer); begin fillchar(a.data,sizeof(a.data),0); a.p:=0; while n0 do begin a.p:=a.p+1; a.dataa.p:=n mod 10000; n:=n div 10000 end end; procedure plus(a,b:arrints;var c:arrints); var 名师资料总结 - - -精品资料欢迎下载 -
15、 - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 25 页 - - - - - - - - - i,m:integer; begin if a.p=b.p then m:=a.p else m:=b.p; creat(c,0); c.p:=m; for i:=1 to m do with c do begin datai:=datai+a.datai+b.datai; datai+1:=datai+1+datai div 10000; datai:=datai mod 10000 end; if c.datac.p+
16、10 then inc(c.p) end; procedure multiply1(a:arrints;n:integer;var c:arrints); var i:integer; begin fillchar(c.data,sizeof(c.data),0); c.p:=a.p; for i:=1 to a.p do with c do begin datai:=datai+a.datai*n; datai+1:=datai div 10000; datai:=datai mod 10000 end; while c.datac.p+10 do inc(c.p) end; procedu
17、re multiply2(a,b:arrints;var c:arrints); var i,j:integer; d,e:arrints; begin multiply1(a,b.datab.p,c); for i:=b.p-1 downto 1 do begin inc(c.p); for j:=c.p downto 2 do c.dataj:=c.dataj-1; c.data1:=0; multiply1(a,b.datai,d); plus(c,d,e); c:=e end; end; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - -
18、- - - - 名师精心整理 - - - - - - - 第 7 页,共 25 页 - - - - - - - - - procedure print(a:arrints); var i:integer; s:string; begin write(f0,a.dataa.p); for i:=a.p-1 downto 1 do begin str(a.datai,s); while length(s)4 do s:=0+s; write(f0,s) end; writeln(f0) end; begin / Insert user code here assign(f,infile); res
19、et(f); assign(f0,outfile); rewrite(f0); fillchar(c,sizeof(c),0); creat(c0,0,1); for i:=1 to max do begin creat(ci,0,1); for j:=1 to i do begin plus(ci-1,j,ci-1,j-1,a); ci,j:=a end end; fillchar(cn,sizeof(cn),0); creat(cn0,1); for i:=1 to max do for j:=1 to i do begin multiply2(cni-j,ci,j,a); plus(cn
20、i,a,b); cni:=b end; repeat readln(f,n); print(cnn) until seekeof(f); close(f); close(f0); end. 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 25 页 - - - - - - - - - 例题 6设给定 n 个变量 x1,x2,xn, 将这些变量依序作底和各层幂,可得出如图11.3.2 的 n重幂:123xxxxn图 11.3.2这里将上述n 重幂看作是不确定的,当在其中加入适
21、当的括号后,才能成为一个确定的n 重幂。通常将n 重幂的理解为图11.3.3 所示的形状:图 11.3.3不同的加括号方式导致不同的n 重幂。例如,当n=4 时, x1,x2,x3,x4的全部 4 重幂有 5个。试设计一个算法,对n 个变量计算出有多少个不同的n 重幂。program ex11_6; $APPTYPE CONSOLE uses SysUtils,arrint; const infile=ex11_6.in; outfile=ex11_6.out; max=100; var n,i,j:integer; c:array1.maxof arrints; f,f0:text; beg
22、in / Insert user code here assign(f,infile); reset(f); assign(f0,outfile); rewrite(f0); fillchar(c,sizeof(c),0); creat(c1,1); for i:=2 to max do for j:=1 to i-1 do begin 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 25 页 - - - - - - - - - multiply2(cj,ci-j,a);
23、 plus(ci,a,b); ci:=b end; repeat readln(f,n); print(cn,f0,false) until seekeof(f); close(f); close(f0) end. 例题7给定由n 个英文单词组成的的一段文章,每个单词的长度(字符个数)依序为l1,l2, , , ln。我们要在一台打印机上将这段文章“漂亮地”打印出来。打印机每行最多可打印 M个字符。这时所说的“漂亮”的定义如下。在打印机所打印的每一行中,行首和行尾可不留空格,行中每2 个单词之间留一个空格。这样如果在一行中打印从单词i 到单词j的字符,则按打印规则,应在一行中恰好打印jikki
24、jl个字符(包括字间空格字符),且不允许将单词打破。多余的空格数为jikklijM。除文章的最后一行外,希望每行多余的空格数尽可能少。因此, 我们以各行(最后一行除外)的多余空格数的立方和达到最小作为“漂亮”的标准。请设计一个“漂亮打印”方案。$A+,B-,C+,D+,E-,F-,G+,H+,I+,J+,K-,L+,M-,N+,O+,P+,Q-,R+,S-,T-,U-,V+,W-,X+,Y+,Z1 $MINSTACKSIZE $00004000 $MAXSTACKSIZE $00100000 $IMAGEBASE $00400000 $APPTYPE GUI program ex11_7; $
25、APPTYPE CONSOLE uses SysUtils; const infile=ex11_7.in; outfile=ex11_7.out; max=20; maxint=100000; var n,m,i,j,k,cn,ak,ai:integer; ans:longint; l:array0.maxof integer; c:array0.max,0.maxof longint; lg:array0.max,0.maxof integer; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - -
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年动态程序设计 2022 动态 程序设计
限制150内