5. 一颗二叉树的前序遍历序列是ABCDEFG,后序遍历序列是CBFEGDA,则根结点的左子树的结点个数可能是( )。 A.0 B. 2 C. 4 D. 6 6. 在下列HTML语句中,可以正确产生一个指向NOI官方网站的超链接的是( )。 A.<a url=”h t t p : / / w w w . n o i . c n”>欢迎访问NOI网站</a> B.<a href=”h t t p : / / w w w . n o i . c n”>欢迎访问NOI网站</a> C.<a>h t t p : / / w w w . n o i . c n</a> D.<a name”h t t p : / / w w w . n o i . c n”>欢迎访问NOI网站</a>
var i, j, cnt, n, m : integer; data : array[1..size] of integer;
begin readln(n, m); for i := 1 to n do read(data[i]); for i := 1 to n do begin cnt := 0; for j := 1 to n do if (data[i] < data[j]) or ((data[j] = data[i]) and (j < i)) then inc(cnt); if cnt = m then writeln(data[i]); end; end. 输入 5 2 96 -8 0 16 87 输出:__________ 2. const size = 100;
var na, nb, i, j, k : integer; a, b : array[1..size] of integer;
begin readln(na); for i := 1 to na do read(a[i]); readln(nb); for i := 1 to nb do read(b[i]);
i := 1; j := 1; while (i <= na) and (j <= nb) do begin if a[i] <= b[j] then begin write(a[i],' '); inc(i); end else begin write(b[j], ' '); inc(j); end; end; if i <= na then for k := i to na do write(a[k], ' '); if j <= nb then for k := j to nb do write(b[k], ' '); end.
function r(n : integer) : integer; var i : integer; begin if n <= num then begin r := n; exit; end; for i :=1 to num do if r(n-i) < 0 then begin r:=i; exit; end; r:=-1; end;
begin readln(n); writeln(r(n)); end. 输入 16 输出:__________ 4. const size=100;
var n,m,x,y,i :integer; r: array[1.. size] of integer; map : array[1..size, 1..size] of boolean; found : boolean;
function successful : boolean; var i : integer; begin for i :=1 to n do if not map[r[i]][r[i mod n + 1]] then begin successful := false; exit; end; successful :=true; end;
procedure swap(var a, b : integer); var t : integer; begin t := a; a := b; b := t; end;
procedure perm(left, right : integer); var i : integer; begin if found then exit; if left > right then begin if successful then begin for i := 1 to n do writeln(r[i], ' '); found := true; end; exit; end; for i:= left to right do begin swap(r[left], r[i]); perm(left + 1, right); swap(r[left], r[i]); end; end;
begin readln(n, m); fillchar(map, sizeof(map), false); for i := 1 to m do begin readln(x, y); map[x][y] := true; map[y][x] := true; end; for i := 1 to n do r[i] := i; found := false; perm(1, n); if not found then writeln('No soloution'); end.
var n, i : integer; time : array[1..Size] of integer; pos :array[1..Size] of Boolean;
function max(a, b :integer) : integer; begin if a > b then max := a else max := b; end;
function go(stage : boolean) : integer; var i, j, num, tmp, ans : integer; begin if (stage = RIGHT_TO_LEFT) then begin num := 0; ans :=0; for i := 1 to n do if pos[i] = Rignt then begin inc(num); if time[i] > ans then ans := time[i]; end; if __________ then begin go := ans; exit; end; ans := INFINITY; for i := 1 to n – 1 do if pos[i] = RIGHT then for j := i+1 to n do if pos[j] = RIGHT then begin pos[i] := LEFT; pos[j] := LEFT; tmp := max(time[i], time[j]) + _______; if tmp < ans then ans := tmp; pos[i] := RIGHT; pos[j] := RIGHT; end; go := ans; end else if (stage = LEFT_TO_RIGHT) then begin ans := INFINITY; for i := 1 to n do if _______ then begin pos[i] := RIGHT; tmp := ________; if tmp < ans then ans := tmp; _________; end; go := ans; end else go := 0; end;
begin readln(n); for i := 1 to n do begin read(time[i]); pos[i] := RIGHT; end; writeln(go(RIGHT_TO_LEFT)); end.
NOIP2010提高组(Pascal语言)参考答案与评分标准
一、单项选择题(共10题,每题1.5分,共计15分) 1 2 3 4 5 6 7 8 9 10 C A A D B D C B C B 二、不定项选择题(共10题,每题1.5分,共计15分,多选或少选均不得分) 1 2 3 4 5 6 7 8 9 10 ACD AD ABD AC B B D D BCD ABC 三、问题求解(共3题,每题5分,共计15分) 1.yyxy xx yyxy xyx xx xyx 2.12 3.18 四、阅读程序写结果(共4题,每题7分,共计28分) 1.16 2.1 2 3 5 6 7 9 10 14 3.4 4.1 6 9 5 4 8 3 2 7 五、完善程序(第1空2分,其余10空,每空2.5分,共计27分) (说明:以下各程序填空可能还有一些等价的写法,各省可请本省专家审定和上机验证,不一定上报科学委员会审查) 1.① num <= 2(或num < 3 或num = 2) ② go(LEFT_TO_RIGHT) ③ pos[i] = LEFT(或LEFT = pos[i]) ④ time[i] + go(RIGHT_TO_LEFT)(或go(RIGHT_TO_LEFT) + time[i]) ⑤ pos[i] := LEFT 本小题中,LEFT可用true代替,LEFT_TO_RIGHT可用true代替,RIGHT_TO_LEFT可用false代替。 2.① opt[k] ② home[r] := k ③ j := i + i(或j := 2 * i 或j := i * 2) ④ swap(i, j)(或swap(j, i)) ⑤ value[i] + heap[1](或heap[1] + value[i]) ⑥ i - m