Hướng Dẫn Giải Bài Toán Cái Túi

Trong ẩm thực ăn uống bao gồm n gói mặt hàng (n i iDòng 1: Chứa hẹn hai số n, M bí quyết nhau ít nhất một lốt cáchn chiếc tiếp sau, mẫu vật dụng i cất nhị số nguyên ổn dương Wi, Vi biện pháp nhau tối thiểu một vệt cáchOutput: tệp tin văn uống phiên bản BAG.OUT

Dòng 1: Ghi cực hiếm lớn số 1 tên trộm hoàn toàn có thể lấyDòng 2: Ghi chỉ số phần đa gói bị lấy

BAG.INP

BAG.OUT

5

11

11

3

3

5 2 1

4

4

5

4

9

10

4

4

Cách giải:

Nếu điện thoại tư vấn F là quý giá lớn số 1 hoàn toàn có thể gồm bằng phương pháp lựa chọn trong những gói 1, 2, …, i cùng với số lượng giới hạn trọng lượng j, thì quý hiếm bự nhất lúc được lựa chọn trong số n gói cùng với số lượng giới hạn trọng lượng M chính là F.

Bạn đang xem: Hướng dẫn giải bài toán cái túi

Quý Khách đã xem: Hướng dẫn giải bài xích tân oán chiếc túi

3.2.1. Công thức truy hỏi hồi tính F.

Với giới hạn trọng lượng j, việc chọn tối ưu trong những các gói 1, 2, …,i - 1, i để có quý hiếm lớn số 1 sẽ sở hữu nhì khả năng:

Nếu không lựa chọn gói đồ vật i thì F là giá trị lớn nhất hoàn toàn có thể bằng cách lựa chọn trong những những gói 1, 2, …, i - 1 cùng với số lượng giới hạn trọng lượng là j, tức là F = FNếu gồm chọn gói thiết bị i (tất yếu chỉ xét đi học phù hợp này lúc cơ mà Wi i cùng với giá trị lớn số 1 có thể đã đạt được bằng phương pháp lựa chọn trong số các gói 1, 2, …, i - 1 cùng với số lượng giới hạn trọng lượng j - Wi. Tức là về phương diện quý giá thu được: F = Vi + F

Vì theo cách xây dừng F là quý giá lớn nhất hoàn toàn có thể, nên F vẫn là max vào 2 giá trị nhận được sống trên.

Xem thêm: Học Phí Đại Học Công Nghiệp Thực Phẩm Tp Hcm Học Phí, Học Phí Trường Đại Học Công Nghiệp Thực Phẩm Tp

3.2.2.Thương hiệu quy hướng động:

3.2.3.Tính bảng phương thơm án:


*

Bảng giải pháp F có n + 1 dòng, M + 1 cột, trước tiên được điền cơ sở quy hướng động: Dòng 0 có toàn số 0. Sử dụng phương pháp truy hỏi hồi, cần sử dụng cái 0 tính cái 1, cần sử dụng mẫu 1 tính dòng 2, v.v… đến khi tính không còn loại n.

3.2.4. Truy vết:

Tính xong xuôi bảng cách thực hiện thì ta quan tâm đến F kia đó là quý hiếm lớn nhất thu được khi chọn trong cả n gói cùng với số lượng giới hạn trọng lượng M. Nếu F = F thì tức là ko lựa chọn gói máy n, ta truy vấn tiếp F. Còn trường hợp F ¹ F thì ta thông báo rằng phép chọn buổi tối ưu có chọn gói thiết bị n và truy tìm tiếp F. Cứ đọng thường xuyên cho tới lúc truy hỏi lên tới mức hàng 0 của bảng phương pháp.

P_3_03_3.PAS * Bài toán dòng túi

program The_Bag;const InputFile = 'BAG.INP'; OutputFile = 'BAG.OUT'; max = 100;var W, V: Array of Integer; F: array of Integer; n, M: Integer;procedure Enter; var i: Integer; fi: Text; begin Assign(fi, InputFile); Reset(fi); ReadLn(fi, n, M); for i := 1 khổng lồ n bởi vì ReadLn(fi, W, V); Close(fi); end;procedure Optimize; Tính bảng phương án bởi bí quyết tầm nã hồi var i, j: Integer; begin FillChar(F, SizeOf(F), 0); Điền cửa hàng quy hoạch động for i := 1 khổng lồ n vày for j := 0 to M bởi begin Tính F F := F; Giả sử không chọn gói thiết bị i thì F = F Sau đó tấn công giá: nếu lọc gói thiết bị i sẽ tiến hành lợi hơn thế thì đặt lại F if (j >= W) and (F F> + V) then F := F> + V; end; end;procedure Trace; Truy vệt tìm nghiệm về tối ưu var fo: Text; begin Assign(fo, OutputFile); Rewrite(fo); WriteLn(fo, F); In ra cực hiếm lớn số 1 hoàn toàn có thể kiếm được while n 0 vì chưng Truy vết trên bảng cách thực hiện tự mặt hàng n lên sản phẩm 0 begin if F F then Nếu có lựa chọn gói trang bị n begin Write(fo, n, ' '); M := M - W; Đã lựa chọn gói lắp thêm n rồi thì chỉ rất có thể có thêm được trọng lượng M - Wn nữa thôi end; Dec(n); end; Close(fo); end;begin Enter; Optimize; Trace;kết thúc.Chulặng mục: Kiến thức thú vị