Đề thi chọn học sinh giỏi cấp Thành phố môn Tin học Lớp 12 - Vòng 2 - Sở GD&ĐT Thành phố Đà Nẵng

Bài 5: Khoảng cách giữa hai xâu

Cho hai xâu ký tự S1 vàì S2 mỗi xâu có độ dài không quá 255 ký tự. Cho phép thực hiện các phép biến đổi sau đây đối với xâu ký tự :

  1. Thay thế một ký tự nào đó bởi một ký tự khác.
  2. Đổi chỗ hai ký tự liền nhau.
  3. Chèn vào một ký tự.
  4. Xóa bớt một ký tự.

Ta gọi khoảng cách giữa hai xâu S1 và S2 là số nhỏ nhất các phép biến  đổi 

nêu trên cần áp dụng đối với xâu S1 để biến nó thành xâu S2 .

doc 3 trang Khánh Hội 15/05/2023 2400
Bạn đang xem tài liệu "Đề thi chọn học sinh giỏi cấp Thành phố môn Tin học Lớp 12 - Vòng 2 - Sở GD&ĐT Thành phố Đà Nẵng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

Tóm tắt nội dung tài liệu: Đề thi chọn học sinh giỏi cấp Thành phố môn Tin học Lớp 12 - Vòng 2 - Sở GD&ĐT Thành phố Đà Nẵng

Đề thi chọn học sinh giỏi cấp Thành phố môn Tin học Lớp 12 - Vòng 2 - Sở GD&ĐT Thành phố Đà Nẵng
SỞ GIÁO DỤC VÀ ĐÀO TẠO 	KỲ THI CHỌN HỌC SINH GIỎI THÀNH PHỐ 
 THÀNH PHỐ ĐÀ NẴNG 	 LỚP 12 THPT NĂM HỌC 2001-2002
 	 ------------ ------------------
Môn : Tin học (Vòng 2)
Thời gian : 180 phút (không kể thời gian giao đề)
ĐỀ CHÍNH THỨC:
Bài 5: Khoảng cách giữa hai xâu
Cho hai xâu ký tự S1 vàì S2 mỗi xâu có độ dài không quá 255 ký tự. Cho phép thực hiện các phép biến đổi sau đây đối với xâu ký tự :
Thay thế một ký tự nào đó bởi một ký tự khác.
Đổi chỗ hai ký tự liền nhau.
Chèn vào một ký tự.
Xóa bớt một ký tự.
Ta gọi khoảng cách giữa hai xâu S1 và S2 là số nhỏ nhất các phép biến đổi 
nêu trên cần áp dụng đối với xâu S1 để biến nó thành xâu S2 .
Yêu cầu : Tính khoảng cách giữa hai xâu S1 và S2 cho trước.
Ví dụ : giả sử S1 = ‘Barney’ S2 =’brawny’ . Khoảng cách giữa hai xâu S1 và S2 là 4.
 Dãy các phép biến đổi cần thực hiện là :
	-Thay kí tự của S1 : ‘B’ bởi ‘b’ ;
	-Đổi chỗ hai ký tự thứ hai (‘a’)và thứ ba (‘r’) ;
	-Chèn ký tự ‘w’ vào sau ký tự thứ ba;
	-Xóa ký tự thứ năm.
Dãy phép biến đổi có thể mô tả như sau :
	‘Barney’ à ‘barney’ à ‘braney’ à ‘brawney’ à ‘brawny’ 
Dữ liệu : vào từ file văn bản BIENDOI.INP có cấu trúc như sau :
	. Dòng đầu tiên chứa xâu S1
	. Dòng thứ hai chứa xâu S2
Kết quả : Ghi ra file văn bản BIENDOI.OUT	
. Dòng đầu tiên ghi số lượng phép biến đổi cần sử dụng (gọi là k).
. Mỗi dòng thứ i trong số k dòng tiếp theo mô tả phép biến đổi được sử dụng ở lần thứ i(i=1,2,...,k) ; đầu tiên ghi chỉ số của phép biến đổi được sử dụng, tiếp đến :
+ Nếu là phép biến đổi 1 cần chỉ ra vị trí của các ký tự cần thay thế trong xâu đang biến đổi và ký tự thay thế ;
+ Nếu là phép biến đổi 2 cần chỉ ra vị trí (xếp theo thứ tự tăng dần) của hai ký tự cần đổi chỗ;
+ Nếu là phép biến đổi 3 cần chỉ ra vị trí của ký tự trong xâu đang xét mà sau nó cần chèn một ký tự và ký tự cần chèn ;
+ Nếu là phép biến đổi 4 cần chỉ ra vị trí của ký tự cần xóa trong câu đang xét.
Ví dụ :
BIENDOI.INP
BIENDOI.OUT
Barney
Brawny
4
1 b
2 3
3 w
4 5 
Bài 6: Dấu dữ liệu trong ảnh
Giả sử ta có dữ liệu D và bức ảnh F. Hãy tìm cách dấu dữ liệu D vào bức ảnh F. Cho biết :
 -Ảnh F là một bảng có kích thước n x m điểm, điểm đen kí hiệu là 0, điểm trắng kí hiệu là 1. 
 -Dữ liệu D là một xâu bít có chiều dài L gồm các bít 0,1.
Phương pháp dấu dữ liệu : Bít đầu tiên của D được dấu vào k điểm ảnh đầu tiên của F (k là khóa, k lẻ), bít thứ hai của D được dấu vào k điểm ảnh tiếp theo của F,...
 Giả sử chúng ta cần dấu bít b là bít thứ i (1<=i<=L) của xâu D vào trong ảnh F, ta dùng phương pháp như sau :
 Bước 1: Đọc liên tiếp k điểm ảnh tiếp theo của ảnh F và gọi là f.
 Bước 2: Ký hiệu sum(f) là tổng số bít có giá trị 1 có trong f. 
 Bước 3:Dấu dữ liệu bít b trong f bằng cách sửa bít trong f :
Cơ sở để sửa bít trong f là so sánh tính chẵn lẻ giữa bít b với sum(f):
 	+Nếu b và sum(f) cùng chẵn (có phần dư khi chia cho 2 bằng 0) hoặc cùng lẻ (có phần dư khi chia cho 2 bằng 1) thì không sửa bít nào trong f.
+Nếu b và sum(f) không cùng chẵn hoặc không cùng lẻ thì ta sửa đúng 1 bít trong f để sum(f) và b có cùng chẵn hoặc cùng lẻ. Việc sửa tiến hành như sau:
Sửa bít cuối cùng của đoạn cùng màu lớn nhất ở trong f.
	Ví dụ : 
 - Cho bít b= 0 và khóa k= 9 :
a) Giả sử f=110100010 => sum(f) = 4 
 b và sum (f) cùng chẵn. Do đó không sửa bít nào cả (xem như đã dấu b vào f).
 b) Giả sử f=110111011 => sum(f) = 7 
 b và sum (f) không cùng chẵn hoặc lẻ . Do đó, người ta sửa 1 bít trong f:
 Sửa bít cuối cùng của đoạn cùng màu lớn nhất ở trong f là 111 thành 110. Khi đó : f=110110011(đã dấu b vào f).
2) Giải mã : Cho biết khóa k, độ dài của xâu D và tên file cần giải mã. Căn cứ vào tính chất của sum(f) hãy cho biết kết quả của xâu D.
Dữ liệu vào: từ file văn bản ANHF.INP có cấu trúc như sau:
Dòng đầu tiên ghi hai số n,m.
Dòng i+1 (1<=i<=n) ghi m điểm ảnh F[i,1], F[i,2],...F[i,m].
Các số ghi trên cùng một dòng cách nhau ít nhất một dấu cách.
Kí hiệu : F[i,m] và F[i+1,1] là 2 điểm ảnh liên tiếp nhau.
Kết quả ra : Lập chương trình menu gồm 2 mục chính :
1/ Mã hóa : Nhập vào khóa k và tên file cần mã hóa. Kết quả ghi ra file văn bản ANHF1.OUT.
2/ Giải mã : Nhập vào khóa k, độ dài của xâu D và tên file cần giải mã. Kết quả đưa ra màn hình xâu bít D đã được giải mã.
Ví Dụ:1. Cần dấu xâu bít D = 011001 vào ảnh F với khóa k = 9 :
 ANHF.INP	 =>	ANHF1.OUT
 6 9 	6 9
1 1 0 1 1 1 0 1 1	1 1 0 1 1 0 0 1 1
0 1 1 0 0 0 1 0 1 	0 1 1 0 0 1 1 0 1 
1 0 0 1 1 1 0 0 1	1 0 0 1 1 1 0 0 1
0 1 1 1 0 0 1 0 1	0 1 1 0 0 0 1 0 1
1 0 0 0 0 0 1 0 1	1 0 0 0 0 1 1 0 1
0 1 0 1 0 1 1 0 1	0 1 0 1 0 1 1 0 1
2. Nhập k=9, L=6 và file cần giải mã là ANHF1.OUT thì kết quả của xâu D ở màn hình là: 011001.
Hạn chế kỹ thuật: Các file bài làm phải đặt tên tương ứng BL5.PAS, BL6.PAS.
---------------------------------------------

File đính kèm:

  • docde_thi_chon_hoc_sinh_gioi_cap_thanh_pho_mon_tin_hoc_lop_12_v.doc