Quy hoạch động bài toán Cái ba lô 0/1
DP[i][w] = max(DP[i-1][w], DP[i-1][w - weight[i]] + value[i])
Tiến độ của tôi ở bài này
Điểm được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: dp table, recursion with memo.
Nội dung đề bài
Mục tiêu kiến thức
- Hiểu công thức truy hồi quy hoạch động bài toán Cái ba lô 0/1:
DP[i][w] = max(DP[i-1][w], DP[i-1][w - weight[i]] + value[i])
- Kỹ thuật tối ưu hóa không gian bộ nhớ từ bảng 2D O(N × W) xuống mảng 1D O(W) bằng cách duyệt ngược từ
capacityvềweight. - Xử lý ngoại lệ
ValueErrorkhi dung lượng sức chứa âm.
Mô tả bài toán
Hệ thống quản lý VRAM tại AI Empire Academy cần nạp các mô hình AI vào bộ nhớ card đồ họa GPU có dung lượng giới hạn capacity (tính bằng MB). Mỗi mô hình thứ i chiếm dung lượng weights[i] và đem lại giá trị điểm chất lượng values[i]. Mỗi mô hình chỉ được chọn tối đa đúng một lần (0 hoặc 1).
Hãy viết hàm knapsack_01(weights: list[int], values: list[int], capacity: int) -> int tính tổng giá trị lớn nhất có thể đạt được mà tổng trọng lượng không vượt quá capacity.
Quy tắc bắt lỗi:
- Nếu
capacity < 0, hàm phải ném ra ngoại lệValueError("Suc chua khong the am"). - Nếu danh sách rỗng hoặc
capacity == 0, trả về0.
Input
weights: Danh sách số nguyên dương là trọng lượng của các đồ vật.values: Danh sách số nguyên dương là giá trị của các đồ vật.capacity: Sức chứa tối đa của ba lô (int).
Output
Số nguyên int là tổng giá trị lớn nhất có thể thu được.
Ràng buộc
- 0 ≤ len(weights) == len(values) ≤ 200.
- 1 ≤ weights[i], values[i] ≤ 104.
- -104 ≤ capacity ≤ 2000.
- Thời gian chạy tối đa: 1000ms.
- Giới hạn bộ nhớ: 256MB.
Ví dụ 1
Input
`weights = [2, 3, 4, 5], values = [3, 4, 5, 6], capacity = 5`Output
`7`Giải thích
Chọn đồ vật 1 (nặng 2, giá trị 3) và đồ vật 2 (nặng 3, giá trị 4). Tổng trọng lượng là 2 + 3 = 5 ≤ 5, tổng giá trị là 3 + 4 = 7.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
