全国青少年信息学奥林匹克联赛阅读程序训练及答案.ppt
《全国青少年信息学奥林匹克联赛阅读程序训练及答案.ppt》由会员分享,可在线阅读,更多相关《全国青少年信息学奥林匹克联赛阅读程序训练及答案.ppt(26页珍藏版)》请在三一办公上搜索。
1、阅读程序写结果专题三分析,练习1,var i,s,max:integer;a:array 1.10 of integer;begin for i:=1 to 10 do read(ai);max:=a1;s:=a1;for i:=2 to 10 do begin if smax then max:=s end;writeln(max=,MAX)end.输入:8 9-1 24 6 5 11 15-28 9输出:max=,77,输入:2 3-6-1 1 2 3-9 4 6输出:max=,10,本质是求一个n长的整数数列的连续子序列的和最大!,练习2,const n=10;var s,i:integ
2、er;function co(i1:integer):integer;var j1,s1:integer;begin s1:=n;for j1:=(n-1)downto(n-i1+1)do s1:=s1*j1 div(n-j1+1);co:=s1 end;begin s:=n+1;for i:=2 to n do s:=s+co(i);writeln(s=,s);end.输出:_,1024,co(2),s1:=10*9/2,co(3),s1:=10*9/2*8/3,co(4),s1:=10*9/2*8/3*7/4,S1=45,S1=120,S1=210,co(5),S1:=,10*9*8*7*
3、6,2*3*4*5,S1=252,co(6),S1:=,10*9*8*7*6*5,2*3*4*5*6,S1=210,co(7),S1:=,10*9*8*7*6*5*4,2*3*4*5*6*7,S1=120,co(8),S1:=,10*9*8*7*6*5*4*3,2*3*4*5*6*7*8,S1=45,co(9),S1:=,10*9*8*7*6*5*4*3*2,2*3*4*5*6*7*8*9,S1=10,co(10),S1:=,10*9*8*7*6*5*4*3*2*1,2*3*4*5*6*7*8*9*10,S1=1,组合数定义:从n个不同元素中取出r(rn)个元素的所有组合的个数。,例:从A、B
4、、C、D、E五个球中任取2个有多少种方案?,练习3,var i,j,s:integer;b:array0.5 of integer;begin s:=1;for i:=1 to 5 do bi:=i;j:=1;while j0 do begin j:=5;while(j0)and(bj=10+j-5)do j:=j-1;if j0 then begin s:=s+1;bj:=bj+1;for i:=j+1 to 5 do bi:=bj+i-j end;end;writeln(s=,s);end.输出:_,252,10,9,8,7,6,6,7,8,9,10,5,6,7,8,9,10,for i:
5、=0 to k do ai:=i;while a0 do begin j:=k;while aj=n-(k-j)do j:=j-1;aj:=aj+1;for i:=j+1 to k do ai:=ai-1+1;end;,最大值 4-(3-j)1 2 3 4,3,2,1,3,4,0,1,2,第二种枚举(利用while循环产生排列串),例6选数(NOIP2002初中组复赛第二题)问题描述:已知n(1=n=20)个整数x1,x2,xn(1=xi=5000000),以及一个整数k(kn)。从n个整数中任选k个整数相加,可分别得到一系列的和。例如当n=4,k=3,4个整数分别为3,7,12,19时,可得
6、到的全部组合及它们的和为3+7+12=22,3+7+19=29,7+12+19=38,3+12+19=34。现在,要求你计算出和为素数的组合共有多少种。如上例中,只有一种组合的和为素数:3+7+19=29。输入:n,k x1,x2,xn输出:一个整数(满足条件的组合个数)样例输入:4 33 7 12 19输出:1,分析:本题可分解成以下两部分:从n个数中任取k个数的组合因为n=20,所以可以用穷举实现。用数组a1,a2,ak记录每种组合中各数的下标,a0是循环开关,初始时a0=0,当a0=1时穷举结束。当选用前面的输入样例,n=4,k=3时,a0a3的变化如下表所示:,结合上表仔细分析,我们可
7、以总结出aj的变化范围是:jn-(k-j),输入:4 33 7 12 19,K-j表示第j位后面还要填的数字个数;,n-(k-j)表示在n个数中倒数第几大的数,var i,j,s:integer;b:array0.5 of integer;begin s:=1;for i:=1 to 5 do bi:=i j:=1;while j0 do begin j:=5;while(j0)and(bj=10+j-5)do j:=j-1;if j0 then begin s:=s+1;bj:=bj+1;for i:=j+1 to 5 do bi:=bj+i-j end;end;writeln(s=,s);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全国青少年 信息学 奥林匹克 联赛 阅读 程序 训练 答案

链接地址:https://www.31ppt.com/p-4965574.html