[10081] Chọn kiện hàng tối ưu (Subset Sum)
Xem dạng PDF🤔 Mô tả bài toán:
Một xe tải có thể chở tối đa trọng lượng W. Có N kiện hàng với trọng lượng lần lượt là A[0], A[1], ..., A[N-1]. Người xếp hàng muốn biết có bao nhiêu cách chọn một nhóm kiện hàng sao cho tổng trọng lượng của chúng đúng bằng W.
Yêu cầu: Viết thuật toán đệ quy quay lui (Backtracking) để đếm số cách chọn thỏa mãn.
💾 Dữ liệu vào:
Cho từ tệp văn bản SUBSET.INP có dạng:
● Dòng 1 chứa hai số nguyên N và W (1 ≤ N ≤ 20, 1 ≤ W ≤ 105).
● Dòng 2 chứa N số nguyên dương là trọng lượng của từng kiện hàng.
💻 Dữ liệu ra:
Ghi ra tệp văn bản SUBSET.OUT gồm một số nguyên duy nhất là số lượng cách chọn kiện hàng thỏa mãn.
🔍 Ví dụ:
| SUBSET.INP | SUBSET.OUT |
|---|---|
| 4 10 2 3 5 8 | 2 |
📌 Ràng buộc dữ liệu:
+ Có 100% số test tương ứng với 100% số điểm của bài thỏa mãn các điều kiện ở phần dữ liệu vào.
⚠️ Lưu ý về File I/O:
Bài tập yêu cầu đọc dữ liệu từ tệp tin SUBSET.INP và xuất kết quả ra tệp tin SUBSET.OUT.
Lưu ý: Vui lòng dùng freopen bình thường để đọc ghi (như code mẫu khi chấm Themis).
Mẹo: Bạn hoàn toàn có thể dùng lệnh ios_base::sync_with_stdio(false); cin.tie(NULL); đi kèm với freopen để tăng tốc độ đọc ghi dữ liệu lớn!
Bình luận