Trang 1
SỞ GIÁO DỤC VÀ ĐÀO TẠO KỲ THI LẬP ĐỘI TUYỂN DỰ THI QUC GIA
TỈNH ĐẮK LẮK NĂM HỌC 2013 - 2014
HƯỚNG DẪN CHẤM MÔN: TIN HỌC
(Hướng dẫn chấm gồm 4 trang) Ngày thi: 24/10/2013
I. Phn chương trình ngun
BÀI 1 –TỪ ĐỐI XNG
var f,g:text;st:string;
Function tudao(st:string):string;
Var i:integer;st1:string;
Begin
st1:='';
For i:=length(st) downto 1 do
st1:=st1+st[i];
tudao:=st1;
End;
Function demtudx(st:string):integer;
Var dem:integer;tu,tu1:string;
Begin
dem:=0;
st:=st+' ';
While length(st)>1 do
Begin
While st[1]=' ' do
delete(st,1,1);
tu:=copy(st,1,pos(' ',st));
if st<>'' then
st:=' '+st;
tu:=' '+tu;
While pos(tu,st)>0 do
delete(st,pos(tu,st),length(tu)-1);
tu1:=tudao(tu);
If (pos(tu1,st)>0) and (st[pos(tu1,st)+length(tu1)-1]=' ') then
inc(dem);
demtudx:=dem;
End;
end;
procedure xuly;
Var st:string;
Begin
Assign(f,'bai1.inp');
Reset(f);
Assign(g,'bai1.out');
Rewrite(g);
While not eof(f) do
Begin
Readln(f,st);
Writeln(g,demtudx(st));
End;
Trang 2
Close(f);
Close(g);
End;
Begin
xuly;
End.
BÀI 2 Biểu thức zero
Program Zero_sum;
Type MangStr = array[1..15] of string;
Const Fi ='BAI2.INP';
Fo ='BAI2.OUT';
Dau : array[1..3] of string[1] = ('-','+','');
S : array[1..9] of char =('1','2','3','4','5','6','7','8','9');
ChuSo = ['1'..'9'];
Var N,k,dem: byte;
D : array[2..9] of string[1];
F : Text;
St : String;
M : MangStr;
Procedure Write_out;
Var i : byte;
Begin
Assign(F,Fo); Rewrite(F);
Writeln(F,dem);
For i:= 1 to dem do writeln(F,M[i],' = 0');
Close(F); Halt;
End;
Procedure Read_inp;
Begin
Assign(F,Fi); Reset(F);
Read(F,N); Close(F);
If N < 3 then write_out;
End;
Function DocSo(S : String): longint;
Var M : longint;
t : byte;
Begin
M:= 0; t:= 0;
If S[k] in ['+','-'] then
begin
t:= k; Inc(k);
end;
While (k<= length(S)) and (s[k] in ChuSo) do
begin
m:= m*10 + ord(s[k]) - ord('0');
Inc(k);
end;
Trang 3
If (t <> 0) and (S[t] = '-') then DocSo:= -M
else DocSo:= M;
End;
Procedure Test;
Var St : string;
i : byte;
T : longint;
Begin
St:= '1'; k:= 1; T:= 0;
For i:= 2 to N do St:= St + D[i] + S[i];
While k < length(St) + 1 do T:= T + DocSo(St);
If T = 0 then
begin
Inc(dem); M[dem]:= St;
end;
End;
Procedure Try(i: byte);
Var j : byte;
Begin
For j:= 1 to 3 do
begin
D[i]:= Dau[j];
If i = N then Test else try(i+1);
end;
End;
BEGIN
Read_inp;
Try(2);
Write_out;
END.
BÀI 3 TAM GIÁC S
{ QUY HOCH ĐỘNG}
Program bai3;
Uses crt;
Type mang = array[1..100,1..100] of integer;
Var
f:text;
i,j,n:integer;
a,b:mang;
Procedure Input;
Begin
clrscr;
Assign(f,'bai3.inp');
reset(f);
readln(f,n);
for j:=1 to n do
begin
for i:=2 to j+1 do
read(f,a[j,i]);
end;
Trang 4
close(f);
end;
{----------------------------------}
Function Max(m,n:integer):integer;
Begin
if n>m then Max:=n
else Max:=m;
end;
{----------------------------------}
Procedure MakeArrayOfQHD;
Begin
b[1,2]:=a[1,2];
for j:=1 to n do b[j,1]:=-maxint;
for i:=3 to n do b[1,i]:=-maxint;
for j:=2 to n do
begin
for i:=2 to j+1 do
b[j,i]:=a[j,i]+max(b[j-1,i],b[j-1,i-1]);
end;
end;
{-----------------------------------}
Procedure FindMax;
var max:integer;
Begin
max:=b[n,1];
for i:=2 to n do
if b[n,i]>max then max:=b[n,i];
assign(f,'bai3.out');rewrite(f);
write(f,max);
close(f);
end;
{------------------------------------}
BEGIN
Input;
makearrayofQHD;
FindMax;
END.
II. Hưng dn chm.
i 1: 3 Test, mi test đúng cho 2 điểm.
i 2: 3 Test, mi test đúng cho 2 điểm + 1 điểm test mu ví d.
i 3: 3 Test, mỗi test đúng cho 2 điểm + 1 điểm test mu ví d
Chú ý: Kết qu th có nhiu phương án khác nhau do đó yêu cầu giám kho xem xét k
khi chm bài.
---- Hết ----