Ta có 4 “quả bóng” (giống như 4 mệnh giá tiền):
| Quả | Giá trị |
|---|---|
| A | 18 |
| B | 11 |
| C | 7 |
| D | 1 |
Mục tiêu:
Tìm số lượng mỗi quả (x, y, z, t) sao cho:
và tổng số quả (x + y + z + t) là nhỏ nhất.
🧮 Ví dụ: N = 22
Ta có thể giải thủ công:
-
Nếu lấy 1 quả A (18) ⇒ còn 4 → cần 4 quả D (1).
Tổng: 1 + 4 = 5 quả. -
Nếu lấy 2 quả B (11×2 = 22) ⇒ đủ.
Tổng: 2 quả ✅ (rất tốt). -
Nếu lấy 3 quả C (7×3 = 21), còn 1 → thêm 1 quả D.
Tổng: 3 + 1 = 4 quả.
➡️ Kết quả tối ưu là x=0, y=2, z=0, t=0 với tổng 2 quả.
✅ Cách viết hàm tổng quát trong C#
Dưới đây là một đoạn code C# để tìm nghiệm tối ưu cho mọi số N nhỏ gọn, dễ hiểu:
🧠 Giải thích
-
Duyệt qua tất cả số lượng bóng A, B, C có thể.
-
Tính tổng giá trị hiện có.
-
Số còn lại được bù bằng bóng D.
-
So sánh tổng số bóng để chọn phương án ít nhất.
📊 Kết quả ví dụ
Với target = 22, chương trình in ra:
Aucun commentaire:
Enregistrer un commentaire