Bài Toán Xếp Ba Lô

  -  

Trong siêu thị nhà hàng tất cả n gói sản phẩm (n i iDòng 1: Chẹn nhì số n, M biện pháp nhau tối thiểu một dấu cáchn cái tiếp sau, loại thứ i cất hai số ngulặng dương Wi, Vi giải pháp nhau tối thiểu một vết cách

Output: file văn uống bạn dạng BAG.OUT

Dòng 1: Ghi quý hiếm lớn số 1 thương hiệu trộm có thể lấyDòng 2: Ghi chỉ số hầu như 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ý hiếm lớn số 1 hoàn toàn có thể có bằng phương pháp chọn trong số gói 1, 2, …, i với số lượng giới hạn trọng lượng j, thì cực hiếm Khủng nhất lúc được chọn trong số n gói với giới hạn trọng lượng M chính là F.

Bạn đang xem: Bài toán xếp ba lô

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

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

Nếu không chọn gói trang bị i thì F là cực hiếm lớn số 1 rất có thể bằng phương pháp chọn trong các các 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 tất cả lựa chọn gói lắp thêm i (tất yếu chỉ xét đi học hòa hợp này Lúc nhưng mà Wi i cùng với mức giá trị lớn số 1 có thể đã đạt được bằng phương pháp chọn trong những các gói 1, 2, …, i - 1 với giới hạn trọng lượng j - Wi. Tức là về phương diện giá trị thu được: F = Vi + F

Vì theo cách chế tạo F là quý hiếm lớn nhất rất có thể, đề xuất F sẽ là max trong 2 cực hiếm nhận được nghỉ ngơi bên trên.


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

Dễ thấy F<0, j> = quý giá lớn nhất rất có thể bằng phương pháp chọn trong số 0 gói = 0.

Xem thêm: Bảng Giá Xe Đầu Kéo Container Mỹ Cập Nhập Mới Nhất 2021, Mua Bán Xe Đầu Kéo Container Cũ Mới Giá Rẻ

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

*

Bảng cách thực hiện F tất cả n + 1 cái, M + 1 cột, trước tiên được điền cơ sở quy hướng động: Dòng 0 gồm toàn số 0. Sử dụng phương pháp tróc nã hồi, cần sử dụng chiếc 0 tính dòng 1, cần sử dụng loại 1 tính mẫu 2, v.v… cho đến lúc tính hết dòng n.

3.2.4. Truy vết:

Tính xong bảng cách thực hiện thì ta quyên tâm mang lại F đó đó là quý giá lớn nhất thu được lúc lựa 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ì Có nghĩa là không chọn gói máy n, ta truy tiếp F. Còn ví như F ¹ F thì ta thông tin rằng phnghiền chọn về tối ưu gồm chọn gói thứ n cùng truy tiếp F. Cđọng liên tiếp cho đến khi truy nã lên đến sản phẩm 0 của bảng cách thực hiện.

Xem thêm: Giao Thông Đường Thủy Việt Nam, Trường Cao Đẳng Giao Thông Vận Tải Đường Thủy Ii

P_3_03_3.PAS * Bài toán chiếc túi

program The_Bag;const InputFile = 'BAG.INP'; OutputFile = 'BAG.OUT'; max = 100;var W, V: Array<1..max> of Integer; F: array<0..max, 0..max> 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 lớn n vị ReadLn(fi, W, V); Close(fi); end;procedure Optimize; Tính bảng giải pháp bởi bí quyết tróc nã hồi var i, j: Integer; begin FillChar(F<0>, SizeOf(F<0>), 0); Điền cửa hàng quy hướng động for i := 1 to n bởi vì for j := 0 to lớn M bởi vì begin Tính F F := F; Giả sử không chọn gói trang bị i thì F = F Sau đó đánh giá: nếu chọn gói trang bị i sẽ tiến hành lợi hơn thế thì đặt lại F if (j >= W) & (F F> + V) then F := F> + V; end; end;procedure Trace; Truy vệt tìm kiế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 có thể kiếm được while n 0 vày Truy dấu trong bảng giải pháp từ bỏ hàng n lên mặt hàng 0 begin if F F then Nếu có lựa chọn gói máy n begin Write(fo, n, ' '); M := M - W; Đã lựa chọn gói thiết bị n rồi thì chỉ hoàn toàn 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;end.