Bài giảng chuyên đề vét cạn, ĐHSPHN Nguyên lý vét cạn Dùng vòng lặp để giải quyết (Phần 1) Mô tả thuật toán Cài đặt Một số ví dụ minh họa Dùng thuật toán quay lui để giải quyết (Phần 2) Tài liệu tham khảo
Trang 1Hội đồng bộ môn Tin học
CHUYÊN ĐỀ VÉT CẠN
Trang 3Nguyên lý vét cạn toàn bộ
Muốn tìm được cây kim trong đống rơm, hãy lần lượt rút từng cộng rơm cho đến khi rút được cây kim
Trang 4Mô tả thuật toán
Gọi D là không gian của bài toán (tập tất cả các khả năng
có thể xảy ra của bài toán)
Trang 5Để tìm kiếm lời giải bài toán ta lần lượt xét tất cả các phần tử của tập D, nếu phần tử x=(x1,x2,…, xn) thỏa f(X)= True thì X là một lời giải của bài toán
If coloigiai= False then <bai toan vo nghiem>
Trang 6VD1 Vừa gà vừa chó 36 con, bó lại cho tròn 100 chân chẵn Tìm số gà, số chó mỗi loại?
Trang 7Code tham khảo
var ga, cho:byte;
Trang 8VD2 Trăm trâu trăm bó cỏ Trâu đứng ăn năm
Trang 9Ta có D= D1 x D2 x D3
D1: tập các giá trị mà số trâu đứng có thể nhận aD2: tập các giá trị mà số trâu nằm có thể nhận bD3: tập các giá trị mà số trâu già có thể nhận c
Điều kiện nhận nghiệm:
a + b + c = 100
5xa + 3xb + c/3=100
Trang 10Code tham khảo
Trang 12VD5 LỚP HỌC MÚA
Lớp học múa khiêu vũ dạ hội của giáo sư Padegras có
n học sinh nam và nữ ghi tên Giáo sư cho tất cả học
sinh xếp thành một hàng dọc và chọn một nhóm các
học sinh liên tiếp nhau cho buổi học đầu tiên với yêu
cầu là số học sinh nam và nữ phải bằng nhau
Hãy xác định, giáo sư Padegras có bao nhiêu cách lựa chọn khác nhau cho buổi học đầu tiên
Dữ liệu: Vào từ file văn bản DANCE.INP:
Dòng đầu tiên chứa số nguyên n (1 ≤ n ≤ 106),
Dòng thứ 2 chứa xâu độ dài n bao gồm các ký tự từ tập {a, b} xác định dòng xếp hàng, a là nam, b – nữ.
Kết quả: Đưa ra file văn bản DANCE.OUT một số
nguyên – số cách lựa chọn
Trang 13Độ phức tạp O(n3) Bộ nhớ: 106 Bytes lưu xâu ký tự.
Kiểm tra các xâu con k ký tự liên tiếp nhau, với k = 2 ÷ n
Ví dụ:
DANCE.INP DANCE.OUT
8
Trang 15Code tham khảo
Trang 16VD6 Đề thi HSG cấp tỉnh ngày 22/10/2011
Nhập vào dãy n số nguyên dương
Yêu cầu:
Sắp dãy số không tăng
In ra các cặp số nguyên tố song sinh (số nguyên tố song sinh là các cặp số nguyên tố có hiệu bằng 2
Trang 17Code tham khảo
procedure sapxep; var tam:integer;
begin
for i:=1 to n-1 do for j:=i+1 to n do
if a[i]<a[j] then begin
tam:=a[i]; a[i]:=a[j]; a[j]:=tam; end;
end;
Trang 18Function ktnt(n:integer):boolean;Var kt:boolean;
Trang 19Code tham khảo
Trang 20Mật khẩu
Một xâu kí tự được gọi là mật khẩu “an toàn” nếu xâu
có độ dài ít nhất 6 kí tự và xâu chứa ít nhất một chữ cái in hoa (‘A’ ‘Z’), một chữ cái in thường (‘a’ ’z’), một chữ số (‘0’ ’9’)
Ví dụ, ‘a1B2c3’, ‘tinHoc6’ là các mật khẩu an toàn,
‘tinhoc’, ‘a1B2c’ là các mật khẩu không an toàn
Yêu cầu: Cho xâu S, tính số lượng xâu con là mật
Trang 21Code tham khảo
Trang 23function checkHAZ(x1,x2:longint):boolean;var i:integer; kt:boolean;
Trang 24Đếm tàu
Một tệp văn bản có tên fn có ghi sơ đồ một vùng biển hình chữ nhật chiều ngang 250 kí tự, chiều dọc (số dòng) không hạn chế Trên biển có các con tàu hình chữ nhật chứa các kí tự 1, vùng nước được biểu thị qua các kí tự 0 Biết rằng các con tàu không dính nhau Hãy đếm số lượng tàu
Trang 25Nhận xét:
Để đếm số tàu ta chỉ cần đếm các mũi tàu (nghĩa là
ô trên cùng bên trái của tàu là đủ vì tàu là các khối hình chữ nhật số 1)
Bài toán có thể phát biểu lại: đếm các ô (i,j) mà giá trị a[i,j]=1 và a[i-1,j]=0 và a[I,j-1]=0
Trang 26Code tham khảo
Trang 27VÉT CẠN DÙNG THUẬT TOÁN QUAY LUI
(BACKTRACKING) – phần 2
Tài liệu tham khảo
Giáo trình thuật toán Lê Minh Hoàng
Toán rời rạc của Nguyễn Đức Nghĩa – Nguyễn Tô Thành
Các tài liệu giải thuật trên mạng
Trang web www.vnoi.info
Trang 28Chúc quý thầy cô thành công