[10081] Chọn kiện hàng tối ưu (Subset Sum)

Xem dạng PDF

Gửi bài giải

Điểm: 10,00
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 1G
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép

🤔 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

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.