سلسلة حل المشكلات (Problem Sloving) اليوم الخمسة و عشرين

التحدي رقم 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]


5 إعجابات

معلش هي المخرجات بتاعت ثالث اختبار طلعت ازاي

إعجابَين (2)

سؤال عظيم

الطريقة الوحيده اللي ممكن تطلع ناتج 0 هي اننا منصرفش الكوينات اللي معانا فا اذا هي طريقة واحده للحصول علي الصفر ( كا قانون : الصفر ليه طريقه واحد للحصول عليه ايا كان اللي في الكوينات ) ,
ودا المبدأ الي هتحل بيه الحوار كله يعني

3 إعجابات

على فكرة التحدى دا صعب لازم تبقى فاهم يعنى ايه برمجه ديناميكيه

ممكن لو عصلجت معاك خالص تسمع مثلا الفيديو دا :

لينك الفيديو
او تبحث ب الكلمه دى :
coin change problem dynamic programming

انا عارف التحديات بقت رخمه
بس بحاول اجيب اى حاجه تخليك تفهم برمجه مش مجرد كاتب لكود

إعجابَين (2)

ما شاء الله، التحديات بدأت تصعب وبقى فيها افكار جديدة، أنا إن شاء الله ابقى احلها بعد العيد.

3 إعجابات

انا بعد ما كتيت الكود اللى انت كتبتهولى الفكرة اشتغلت شويه و بعدين بقا فى ايرور لما يحصل تصرفات غير متوقع

3 إعجابات

معلش يسطا هخش اشوف الرسايل و ارد عليك هناك , ولا قصدك علي التحدي دا ؟

3 إعجابات

ولا يهمك يا اخي :growing_heart: عارف انك مشغول

إعجابَين (2)