สมมติว่าเรามีหมายเลข N และไม่จำกัดจำนวนเหรียญที่มีมูลค่า 1, 10 และ 25 เหรียญสกุลเงิน ค้นหาจำนวนเหรียญขั้นต่ำที่เราต้องใช้เพื่อจ่ายจำนวน N ให้ตรงกัน สมมติว่า N คือ 14 จากนั้นจำนวนเหรียญจะเป็น 5 เป็นเหรียญมูลค่า 10 เหรียญ 1 เหรียญและเหรียญมูลค่า 1 เหรียญ 4 เหรียญ
เพื่อแก้ปัญหานี้ เราต้องใช้ขั้นตอนเหล่านี้ -
- ถ้า N <10 ให้ส่งคืน N จำนวน 1 เหรียญมูลค่า
- ถ้า N> 9 และ N <25 แล้วหารค่าด้วย 10 แล้วได้ผลลัพธ์ ส่วนที่เหลือจะครอบคลุมโดยใช้ 1 เหรียญมูลค่าเพิ่มการนับเพื่อให้ได้ผลลัพธ์
- ถ้า N> 25 ให้หารด้วย 25 ให้นำผลลัพธ์ที่ได้เมื่อผลลัพธ์เป็น <25 ให้ทำภารกิจเดิมอีกครั้งสำหรับจุดที่สองเป็นต้น
ตัวอย่าง
#include<iostream> using namespace std; int countMinCoins(int n) { if(n<10) return n; else if(n > 9 && n < 25){ int count = n/10; count += n%10; return count; } else { int count = n/25; return count + countMinCoins(n%25); } } int main() { int n = 88; cout << "Minimum number of coins required: " << countMinCoins(n); }
ผลลัพธ์
Minimum number of coins required: 7