اكتب دالة باسم 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 عملات)
  • لكل مبلغ، جرّب كل عملة ممكنة

الناتج (Console)

سيظهر ناتج تنفيذ الكود هنا.