اكتب دالة باسم coinChange تحسب أقل عدد من العملات المطلوبة للوصول لمبلغ معين.
المطلوب:
- الدالة تأخذ معاملين:
coins: قائمة من فئات العملات المتاحةamount: المبلغ المطلوب الوصول إليه
- الدالة تُرجع أقل عدد من العملات، أو
-1إذا كان مستحيلًا - يمكنك استخدام كل فئة عدد غير محدود من المرات
- استخدم Dynamic Programming للحصول على الحل الأمثل
مثال:
coinChange([1, 2, 5], 11) # 3 (5+5+1)
coinChange([2], 3) # -1 (مستحيل)
coinChange([1], 0) # 0
coinChange([1, 3, 4], 6) # 2 (3+3)
ملاحظات:
- استخدم مصفوفة DP حيث
dp[i]يُمثل أقل عدد عملات للمبلغi - ابدأ من المبلغ 0 (يحتاج 0 عملات)
- لكل مبلغ، جرّب كل عملة ممكنة