Phương pháp Quay Lui

20 83 0
Phương pháp Quay Lui

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Giới thiệu phương pháp quay lui tới mọi người. Đi kèm là 15 bài tập sử dụng phương pháp quay lui để giải. Các bài tập này đều có hướng dẫn giải và chương trình viết bằng ngôn ngữ lập trình Pascal cho mọi người tham khảo.

PHƯƠNG PHÁP QUAY LUI A LÝ THUYẾT Phương pháp tốt để giải toán tin học biết sử dụng phối hợp uyển chuyển nhiều thuật toán, không lạm dụng, coi thường phương pháp - Phương pháp quay lui dùng để liệt kê cấu hình tổ hợp đếm cấu hình tổ hợp - Phương pháp quay lui sử dụng ta xác định tập giá trị mà phần tử x[i] cấu hình (x[1], x[2], , x[n]) nhận Tập giá trị mà phần tử x[1] nhận trùng khơng trùng với tập giá trị mà phần tử x[2], , x[n] nhận (phụ thuộc vào toán cụ thể) Thủ tục quay lui mơ tả sau: Procedure Try(i); Var Begin For If then Begin x[i]:=V; If i=n then Else Begin Try(i+1) End; End; End; Những khó khăn sử dụng PP quay lui: - Việc xác định tập giá trị mà phần tử x[i] cấu hình nhận - Khi gán x[i]=V người dùng phải đánh dấu số giá trị để phần tử x[i+1] phần tử đứng sau không phép nhận giá trị - Phương pháp quay lui khó thực liệu toán lớn Các bước tiến hành dùng PP quay lui: - Xác định cấu hình tổng quát: Cấu hình có phần tử, thuộc kiểu liệu nào? - Xác định tập giá trị cho phần tử cấu hình - Xác định bảng lưu kết - Bảng dùng để đánh dấu giá trị (nếu có) B MỘT SỐ BÀI TỐN Bài số 1: Liệt kê dãy bit độ dài N Ví dụ: binary.inp binary.out 000 001 010 011 100 101 110 111 Hướng dẫn: - Cấu hình (x1, x2, x3, …, xn) - x[i] nhận {0; 1} const fi='binary.inp'; fo='binary.out'; var f:text; n:byte; x:array[1 100] of byte; {===============================} procedure docdl; begin assign(f,fi); reset(f); readln(f,n); close(f); end; {===============================} procedure Bina(i:byte); var j,k:byte; begin for j:=0 to begin x[i]:=j; if i=n then begin for k:=1 to n write(f,x[k]:2); writeln(f); end else Bina(i+1); end; end; {===============================} BEGIN docdl; fillchar(x,sizeof(x),0); assign(f,fo); rewrite(f); Bina(1); close(f); END Bài số 2: Liệt kê tất tập gồm k phần tử tập {1; 2; 3; …; n} Hướng dẫn: - Cấu hình (x1, x2, x3, …, xk) - Để tránh việc lặp lặp lại tập x[i] nhận giá trị từ x[i-1]+1 đến n-k+i - Chú ý đánh chặn x[0]=0; Ví dụ: Tapcon.inp Tapcon.out 123 124 125 134 135 145 234 235 245 345 const fi='Tapcon.inp'; fo='Tapcon.out'; var f:text; n,k:longint; x:array[0 1000] of longint; {===============================} procedure Tapcon(i:longint); var j,m:longint; begin for j:=x[i-1]+1 to n-k+i begin x[i]:=j; if i=k then begin for m:=1 to k write(f,x[m]); writeln(f); end else Tapcon(i+1); end; end; {=================================} BEGIN assign(f,fi); reset(f); readln(f,n,k); close(f); x[0]:=0; assign(f,fo); rewrite(f); Tapcon(1); close(f); END Bài số 3: Liệt kê hoán vị Liệt kê hoán vị tập {1; 2; …; n} Ví dụ: Hoanvi.inp Hoanvi.out 123 132 213 231 312 321 Hướng dẫn: - Cấu hình (x1, x2, , xn) - X[i] nhận giá trị từ đến n-1 trừ giá trị mà phần tử trước nhận - Dùng mảng cd để đánh dấu giá trị dùng cấu hình const fi='Hoanvi.inp'; fo='Hoanvi.out'; var n,i:byte; f:text; x:array[1 100] of byte; cd:array[1 100] of boolean; { -} Procedure Hoanvi(i:byte); var j,k:byte; begin for j:=1 to n if cd[j] then begin x[i]:=j; if i=n then begin for k:=1 to n write(f,x[k]); writeln(f); end else begin cd[j]:=false; Hoanvi(i+1); cd[j]:=true; end; end; end; { } BEGIN assign(f,fi); reset(f); readln(f,n); close(f); for i:=1 to n cd[i]:=true; assign(f,fo); rewrite(f); Hoanvi(1); close(f); END Bài số 4: Mua hàng Một cửa hàng bán N loại bánh khác nhau, loại bánh có số lượng nhiều đủ để đáp ứng yêu cầu khách hàng Có người mua hàng cần mua K bánh Giả sử người quan tâm đến loại bánh mà không quan tâm đến bánh cụ thể thứ tự chọn chúng Yêu cầu: Hãy cho biết khách hàng có cách khác để chọn mua hàng? Dữ liệu vào: Cho tập tin văn MHANG.INP gồm dãy ghi hai số nguyên dương N K (1

Ngày đăng: 23/10/2020, 21:07

Hình ảnh liên quan

- Cấu hình (x1, x2, x3, …, xn) -x[i] có thể nhận {0; 1} - Phương pháp Quay Lui

u.

hình (x1, x2, x3, …, xn) -x[i] có thể nhận {0; 1} Xem tại trang 2 của tài liệu.
- Cấu hình (x1, x2, x3, …, xk) - Phương pháp Quay Lui

u.

hình (x1, x2, x3, …, xk) Xem tại trang 3 của tài liệu.
Bài số 3: Liệt kê hoán vị - Phương pháp Quay Lui

i.

số 3: Liệt kê hoán vị Xem tại trang 4 của tài liệu.
- Cấu hình (x1, x2, ..., xn) - Phương pháp Quay Lui

u.

hình (x1, x2, ..., xn) Xem tại trang 4 của tài liệu.
- Cấu hình (x1, x2, x3, …, xk), trong đó x[i] là loại loại bánh của cái bánh thứi mà khác hàng chọn mua - Phương pháp Quay Lui

u.

hình (x1, x2, x3, …, xk), trong đó x[i] là loại loại bánh của cái bánh thứi mà khác hàng chọn mua Xem tại trang 5 của tài liệu.
- Cấu hình x1, x2, ..., xn - Phương pháp Quay Lui

u.

hình x1, x2, ..., xn Xem tại trang 9 của tài liệu.
- Cấu hình x1, x2, ..., xn - Phương pháp Quay Lui

u.

hình x1, x2, ..., xn Xem tại trang 10 của tài liệu.
An được mời tham gia trò chơi “Siêu thị máy tính” do đài truyền hình ZTV tổ chức. Siêu thị được đặt trong trường quay truyền hình có n mặt hàng được đánh số từ 1 đến n và mặt hàng thứ i được niêm yết giá là ci đồng, i = 1, 2, …, n - Phương pháp Quay Lui

n.

được mời tham gia trò chơi “Siêu thị máy tính” do đài truyền hình ZTV tổ chức. Siêu thị được đặt trong trường quay truyền hình có n mặt hàng được đánh số từ 1 đến n và mặt hàng thứ i được niêm yết giá là ci đồng, i = 1, 2, …, n Xem tại trang 12 của tài liệu.
Bài số 10: Siêu thị may mắn - Phương pháp Quay Lui

i.

số 10: Siêu thị may mắn Xem tại trang 12 của tài liệu.
- Cấu hình (x1, x2, ..., xn) trong đó: x[i] là số lượng chọn đồ vật thứ i. -X[i] nhận các giá trị từ 0 đến m[i] - Phương pháp Quay Lui

u.

hình (x1, x2, ..., xn) trong đó: x[i] là số lượng chọn đồ vật thứ i. -X[i] nhận các giá trị từ 0 đến m[i] Xem tại trang 13 của tài liệu.
- Xét cấu hình x1, x2, x3, …, xn; Với xi=1 nếu người thứi có nhờ người đứng trước mua vé hộ và xi=0 nếu người thứ i không nhờ người đứng trước để mua. - Phương pháp Quay Lui

t.

cấu hình x1, x2, x3, …, xn; Với xi=1 nếu người thứi có nhờ người đứng trước mua vé hộ và xi=0 nếu người thứ i không nhờ người đứng trước để mua Xem tại trang 16 của tài liệu.
- Dùng cấu hình d1, d2, …, d9 để xác định dấu trước các chữ số +  di=-1 nếu trước chữ số i là dấu – - Phương pháp Quay Lui

ng.

cấu hình d1, d2, …, d9 để xác định dấu trước các chữ số + di=-1 nếu trước chữ số i là dấu – Xem tại trang 17 của tài liệu.
- Cấu hình (x1, x2, ..., xn) trong đó: x[i] là số tờ của loại tiền mệnh giá t[i] -X[i] nhận các giá trị từ 0 đến m[i] - Phương pháp Quay Lui

u.

hình (x1, x2, ..., xn) trong đó: x[i] là số tờ của loại tiền mệnh giá t[i] -X[i] nhận các giá trị từ 0 đến m[i] Xem tại trang 19 của tài liệu.

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan