(PASCAL版 试卷)
4.
Program test_1004; Var
n,i,k:integer; sum,ans,min:integer; Begin
readln(n);sum:=0;min:=0; ans:=-32764; For i:=1 to n do Begin
read(k); sum:=sum+k;
If sum-min>ans then ans:=sum-min; If sum writeln(ans); End. (1) 输入: 6 5 -1 0 3 -5 9 输出: (2) 输入: 15 5 -1 0 3 -5 9 -10 -7 6 -4 -2 10 -2 输出: - 6 - -21 18 (PASCAL版 试卷) 四.完善程序(根据问题要求和已有程序,在程序空格处填入适当的语句或符号,使程序完整。本题共10+18=28分) 1.【世博会攻略-1】(2+2+2+2+2=10分) 味子很想去游览世博会,可是听说世博会很多展馆需要排队很长时间,她又犹豫了。聪明的她就想用程序来帮助她选择展馆。现在味子已知n个展馆分别需要的排队时间,她想从中选出排队时间最少的10个展馆作为候选对象,如果她去世博会,她就会选择这些展馆去参观。下面就是味子用来选择这10个展馆的程序,请完善该程序。 输入数据第一行只有一个整数n(不超过300),表示总的展馆数量。第二行一共包含n个用空格分隔的整数,依次表示每个展馆可能需要的排队时间,第i个数值表示编号为i的展馆所需要的排队时间。 输出只有一行,包含10个用空格分隔的整数,表示排队时间最少的10个展馆的编号。 program test_1005; var n,i,j,k,t:integer; a:array[1..300] of integer; b:array[1..300] of integer; begin readln( ① ); for i:=1 to n do begin read(a[i]);b[i]:=i;end; for i:=1 to 10 do begin ② ; for j:=i+1 to n do if a[j]i then begin t:=b[i];b[i]:=b[k];b[k]:=t; t:=a[i];a[i]:=a[k]; ④ end; end; for i:=1 to 10 do write( ⑤ ,' '); end. 输入样例: 15 5 3 9 10 2 3 4 1 6 7 8 11 15 2 12 输出样例: 8 5 14 2 6 7 1 9 10 11 - 7 - (PASCAL版 试卷) 2.【世博会攻略-2】(3+3+3+3+3+3=18分) 世博会中,有些展馆虽然不必排队(或者排队时间很短),但没什么可看的;有些展馆虽然排队等候时间很长,但太值得看了(比如,我们的中国馆)。 味子是个喜欢保质保量的人,她现在有12小时的游览时间,她希望在这12小时中游览4个展馆(为方便,我们不计味子在各展馆之间走路和游览的时间),但这4个展馆不能是没什么可看的。于是,她收集了每个展馆需要排队的时间,为每个展馆设定了可看指数(指数越高越值得看)。现在她想统计一下12小时内分别可以游览哪4个展馆,这4个展馆必须满足下列条件: (1)4个展馆的排队时间总和不能超过12小时 (2)这4个展馆的可看指数总和不能小于10。 (3)任何一个展馆的可看指数都必须不小于2。 满足上述条件的每4个展馆称为一组(展馆编号相同但顺序不同的情况视为相同。比如,“1、3、5、6”和“5、6、1、3”我们认为是同一种方案),味子用下列程序用来统计满足条件的组数,请完善程序。 输入数据第一行只有一个整数n(n<=300),表示总的展馆数量。第二行有n个用空格分隔的整数,依次表示每个展馆的排队时间。第三行有n个用空格分隔的整数,表示每个展馆的可看指数。 输出数据第一行只有一个整数ans,表示满足条件的方案总数。接下来共有ans行,每行表示满足条件的一组展馆的编号。 program test_1006; var n,i,j,ans:integer; a,p:array[1..300] of integer; f:array[1..100,1..4] of integer; procedure init; var i,j:integer; begin readln(n); for i:=1 to n do read(a[i]); readln; for i:=1 to n do read( ① ); for i:=1 to 100 do for j:=1 to 4 do f[i,j]:=0; ans:=0; - 8 - (PASCAL版 试卷) end; procedure work; var i,j,x1,x2,x3,x4:integer; begin for x1:=1 to n-3 do if p[x1]>=2 then begin for x2:=x1+1 to n-2 do if p[x2]>=2 then begin for x3:=x2+1 to n-1 do if p[x3]>=2 then begin for x4:=x3+1 to n do if (p[x4]>=2) and (a[x1]+a[x2]+a[x3]+a[x4]<=12) and ( ② ) then begin ③ ;f[ans,1]:=x1;f[ans,2]:=x2; f[ans,3]:=x3;f[ans,4]:=x4; end; end; end; end; end; procedure out; var i,j:integer; begin writeln(ans); for i:=1 to ④ do begin for j:=1 to 4 do write( ⑤ ,' '); - 9 - (PASCAL版 试卷) writeln; end; end; begin {main} init; ⑥ ; out; end. 输入样例1: 12 6 4 2 5 1 0 3 2 4 4 3 5 5 2 1 4 1 1 2 2 3 4 1 2 输出样例1: 0 输入样例2: 8 4 3 2 3 1 0 3 2 5 2 1 4 1 1 2 2 输出样例2: 4 1 2 4 8 1 2 7 8 1 4 7 8 2 4 7 8 //表示没有任何4个展馆满足条件 //编号为“1、2、4、8”等4组展馆满足条件- 10 -