1. Trang chủ
  2. » Trung học cơ sở - phổ thông

Đề thi học sinh giỏi tin lớp 11

6 198 1

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 6
Dung lượng 53 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Xâu S’ đợc tạo ra từ xâu S bằng cách đổi chỗ kí tự ở vị trí i và kí tự ở vị trí j của xâu S sao cho xâu S’ đợc sắp tăng dần theo thứ tự từ điển.. Hãy tìm cách tạo ra xâu S’ nh trên sao c

Trang 1

Sở giáo dục - đào tạo QB Kỳ thi chọn họcSinh Giỏi lớp 11

Trờng thpt chuyên qb Năm học 2006-2007

SBD: Môn: Tin học

phút.

Đề ra:

Sử dụng ngôn ngữ lập trình Turbo Pascal để lập trình giải các bài toán sau:

Câu 1 (5,0 điểm) Sắp xếp xâu - Sapxep.PAS

Một xâu kí tự S bao gồm N (N < 255) kí tự đợc lấy từ tập kí

tự sau: ‘A’, ‘B’, ‘C’ Xâu S’ đợc tạo ra từ xâu S bằng cách đổi chỗ

kí tự ở vị trí i và kí tự ở vị trí j của xâu S sao cho xâu S’ đợc sắp tăng dần theo thứ tự từ điển Hãy tìm cách tạo ra xâu S’ nh trên sao cho số lần đổi chỗ các kí tự ở vị trí i và kí tự ở vị trí j trong xâu S là ít nhất

Dữ liệu vào: Cho trong file sapxep.inp có cấu trúc nh sau:

- Dòng 1: Ghi xâu S.

Dữ liệu ra: Ghi trong file sapxep.out theo cấu trúc nh sau:

- Dòng 1: Ghi số m là số lần đổi chỗ ít nhất các kí tự ở vị trí

i và kí tự ở vị trí j trong xâu S.

- m dòng tiếp theo mỗi dòng ghi 2 số i và j cách nhau một kí

tự trắng, thể hiện việc đổi chỗ kí tự ở vị trí i và kí tự ở vị trí j trong xâu S.

Ví dụ:

1 3

4 7

2 9

5 9

Câu 2: (5,0 điểm) Chuỗi hạt - chuoihat.PAS

Trong một file văn bản có tên là CHUOIHAT.INP có biểu diễn một chuỗi hạt, mỗi hạt có thể nhận một trong số các màu mã số từ

1 đến 30 Lập trình tìm một điểm để cắt chuỗi rồi căng thẳng ra sao cho các hạt cùng màu ở hai đầu là lớn nhất

Trang 2

Dữ liệu vào: Chuỗi đợc thể hiện trong file CHUOIHAT.INP dới

dạng hình thoi, dòng đầu tiên và dòng cuối cùng có mỗi hạt một dòng Mỗi dòng còn lại có 2 hạt cách nhau một kí tự trắng (Chuỗi hạt có tối đa là 1000 hạt) Các hạt của chuỗi đợc đánh số bắt

đầu từ hạt trên cùng và theo chiều kim đồng hồ.

Kết quả: ghi ra file CHUOIHAT.OUT

- Ghi 3 số i j t các số cách nhau một kí tự trắng (i và j là vị trí cắt chuỗi hạt, t là số lợng các hạt cùng màu lớn nhất ở hai đầu).

Ví dụ:

chuoihat.INP chuoihat.OUT 4

8

7 8 7

Hết

Trang 3

Hớng dẫn chấm thi chọn học sinh giỏi lớp 11

năm học 2006-2007

I/ Ph ơng pháp chung

- Giám khảo tạo các bộ dữ liệu vào, tính toán kết quả Thực hiện chơng trình của học sinh và so sánh kết quả.

- Giám khảo có thể sử dụng chơng trình mẫu để tính kết quả của dữ liệu vào: SAPXEP.PAS CHUOIHAT.PAS

- Chơng trình học sinh chạy đúng mỗi bộ test, giám khảo cho 0.5 điểm Nh vậy, nếu câu hỏi có 5,0 điểm thì giám khảo phải tạo đợc 10 bộ test.

- Nếu chơng trình chạy sai test nào thì giám khảo cho 0

điểm đối với test đó

II/ Ch ơng trình mẫu

Câu 1 (5,0 điểm) Sắp xếp xâu - Sapxep.PAS

Program Sap_xep;

Type bb=Byte;ww=Word;ii=Integer; ll=Longint;

Const fi='Sapxep.inp';

fo='Sapxep.out';

Var n,cA,cB:ww;

st: string;

count:ww;

(*****************)

Procedure Read_Data;

Var f:Text;

Begin

Assign(f,fi);

Reset(f);

Read(f,st);

Close(f);

end;

(*****************)

Procedure Init;

Var i,t:ww;

Begin

count:=0;

cA:=0;

cB:=0;

For i:=1 to Length(st) do

if st[i]='A' then

inc(cA);

t:=0;

For i:=1 to Length(st) do

if st[i]='B' then

inc(t);

cB:=cA + t;

end;

(*****************)

Procedure Processing;

Var f:text;

Procedure HoanDoi(x,y:ww);

Var Tg:Char;

Begin

Trang 4

Tg:=st[x];

st[x]:=st[y];

st[y]:=Tg;

End;

(****************)

Function Find(ch:char;k,l:ww):ww;

Var i:ww;

Begin

Find:=0;

For i:= k to l do

if st[i] = ch then

begin

Find:=i;

Break;

end;

end;

Procedure Hoanvipq(ch1,ch2:char; x1,x2,y1,y2:ww); Var l,r:ww;

Begin

l:=1;

r:=1;

While (l<>0) and (r<>0) do

Begin

l:=Find(ch2,x1,x2);

r:=Find(ch1,y1,y2);

if (l<>0) and (r<>0) then

Begin

Hoandoi(l,r);

x1:=l;

y1:=r;

Writeln(f,l,' ',r);

inc(count);

end;

end;

end;

(****************)

Begin

Assign(f,'Tam.out');

Rewrite(f);

Hoanvipq('A','B',1,cA,cA+1,cB);

Hoanvipq('A','C',1,cA,cB+1,length(st));

Hoanvipq('B','C',cA+1,cB,cB+1,length(st)); Hoanvipq('A','B',1,cA,cA+1,length(st));

Hoanvipq('A','C',1,cA,cA+1,length(st));

Hoanvipq('B','C',cA+1,cB,cB+1,length(st)); close(f);

End;

(*****************)

Procedure Write_Data;

Var f,g:text; p,q:ww;

Begin

Assign(f,fo);

Rewrite(f);

Assign(g,'Tam.out');

Reset(g);

Writeln(f,count);

While not eof(g) do

Begin

Readln(g,p,q);

Writeln(f,p,' ',q);

end;

close(g);

erase(g);

close(f);

Trang 5

end;

(*****************)

Begin

Read_Data;

Init;

Processing;

Write_Data;

end

C©u 2: (5,0 ®iÓm) Chuçi h¹t - chuoihat.PAS

Program Chuoi_hat;

Const MaxN=10000;

fi='Chuoihat.inp';

fo='Chuoihat.out';

Type bb=Byte;ww=Word;ii=Integer; ll=Longint;

mmc=Array[1 MaxN] of bb;

Var A:mmc;

n,Luudem,Luucat:ww;

(*****************)

Procedure Read_Data;

Var f:Text;

k,i,j:ww;

Begin

fillchar(A,sizeof(A),0);

Assign(f,fi);

Reset(f);

i:=1;

Readln(f,A[i]);

j:= 5000-1;

While not eof(f) do

Begin

inc(j);

read(f,A[j]);

if not eoln(f) then

Begin

inc(i);

Read(f,A[i]);

end;

readln(f);

end;

For k:= j Downto 5000 do

Begin

inc(i);

A[i]:=A[k];

end;

n:=i;

Close(f);

end;

(*****************)

Procedure Processing;

Var i,j,Top,dau,truoc,sau:ww;

Begin

Luucat:=0;

Luudem:=0;

Top:=n;

dau:=0;

While A[Top]=A[1] do

Begin

dec(Top);

inc(dau);

end;

if top = 0 then

Begin

Trang 6

Luucat:=n+1;

Luudem:=n;

exit;

end;

i:=1;

While A[i] = A[1] do

Begin

inc(dau);

inc(i);

end;

sau:=dau;

While i<=Top do

Begin

truoc:=sau;

sau:=0;

j:=i;

While A[i]=A[j] do

Begin

inc(sau);

inc(i);

end;

if truoc+sau > Luudem then Begin

Luudem:=truoc+sau;

Luucat:=j;

end;

end;

if sau + dau > Luudem then

Begin

Luudem:=sau+dau;

Luucat:=Top+1;

end;

end;

(*****************)

Procedure Write_Data;

Var f:Text;

Begin

Assign(f,fo);

ReWrite(f);

if Luucat > n then

Write(f,n,' ' ,1)

else

Write(f,Luucat-1,' ' ,Luucat); Write(f,' ',Luudem);

Close(f);

end;

(*****************)

Begin

Read_Data;

Processing;

Write_Data;

end

HÕt

Ngày đăng: 17/08/2017, 14:15

TỪ KHÓA LIÊN QUAN

w