التحدي رقم 25 لليوم رقم 25 من رمضان
اولا
كل عام و انتم بخير و اعاده الله عليكم بالمن و بالخير و البركه
بالامس كنا نقول رمضان اهلا و اليوم نقول رمضان مهلا فاللهم اغفر لنا ما مضي و اصلح لنا ما بقي واختم لنا رمضان بخير و انت راض عنا
و لا تنسي تجديد نيتك فأن طلب العلم عباده
لا تنسوني و اخي المعتقل سياسيا من جميل دعائكم في هذه الليالي العشر
وصف التحدي :
متنساش تدعي لخواتنا ف غزه لو لسه عندك قلب و شوية دم
**مستوي التحدي : **
متوسط (رياضيا+برمجيا) ← البرمجة الديناميكية
قم بكتابة دالة اسمها: coins_combinations
تقوم الدالة باستقبال عدد صحيح من نوع integer
يمثل هذا الرقم المبلغ النهائي. وتستقبل مصفوفة متكونة من اعداد صحيحة integer
وهذه المصفوفة تمثل العملات المعدنية المتوفرة. تقوم الدالة بحساب عدد الطرق الممكنة للوصول للمبلغ النهائي عن طريق جمع ارقام العملات المعدنية.
مثال
إذا كانت المدخلات coins = [2,5]
والمبلغ amount=10
فإن الناتج سيكون 2 حيث بالإمكان انشاء التركيبات التالية: [2,2,2,2,2]
و [5,5]
كل تركيبة مجموعها يساوي المبلغ (amount) = 10
ملحوظه : كلمة مصفوفة يعني ليست ← [,]
ملحوظه : تقدر تحل التحدي و تتحقق من صحته من خلال الموقع هنا اهو :
موقع سلسلة حل المشكلات (Problem Sloving)
بس خد بالك لو هتحل ع الموقع لازم اسم الداله يكون زي الاسم اللي موجود في وصف التحدي
أضغط لرؤية المخرجات المتوقعة عشان تتيست الكود بتاعك
الاختبار 1
المدخلات (Inputs)
amount = 4
coins = [1, 2]
المخرجات (Outputs)
3
الاختبار 2
المدخلات (Inputs)
amount = 10
coins = [5, 2, 3]
المخرجات (Outputs)
4
الاختبار 3
المدخلات (Inputs)
amount = 0
coins = [3, 5, 7]
المخرجات (Outputs)
1
الاختبار 4
المدخلات (Inputs)
amount = 11
coins = [5, 7]
المخرجات (Outputs)
0
حل التحدي
def coins_combinations(amount, coins):
dp = [0] * (amount + 1)
dp[0] = 1
for coin in coins:
for i in range(coin, amount + 1):
dp[i] += dp[i - coin]
return dp[amount]