এই আর্টিকেলে আমরা নিচের সমস্যা সমাধানের কথা শিখব।
সমস্যা: N টি কয়েন দেওয়া আছে এবং আমরা সেগুলোর চেঞ্জ করতে চাই এমনভাবে যাতে, S-এ প্রতিটি ভ্যালুর অনলিমিটেড সাপ্লাই থাকে। আমাদের ডিসপ্লে করতে হবে কতভাবে আমরা অর্ডার উপেক্ষা করে চেঞ্জ করতে পারি।
সময় জটিলতা কমাতে ডাইনামিক প্রোগ্রামিং কনসেপ্ট ব্যবহার করে সমস্যা সমাধান করব।
চলুন নিচের ইমপ্লিমেন্টেশনে সমাধানটি পর্যবেক্ষণ করি।
উদাহরণ
# ডাইনামিক অ্যাপ্রোচ
def count(S, m, n):
# বেস কেস
table = [[0 for x in range(m)] for x in range(n+1)]
# n=0 এর জন্য
for i in range(m):
table[0][i] = 1
# বাকি ভ্যালু বটম-আপ ম্যানার ফিল
for i in range(1, n+1):
for j in range(m):
# S[j] অন্তর্ভুক্ত করে সমাধান
x = table[i - S[j]][j] if i - S[j] >= 0 else 0
# S[j] বাদ দিয়ে সমাধান
y = table[i][j-1] if j >= 1 else 0
# টোটাল
table[i][j] = x + y
return table[n][m-1]
# মেইন
arr = [1, 3, 2, 4]
m = len(arr)
n = 5
print("Number of coins:", end="")
print(count(arr, m, n))
আউটপুট
Number of coins: 6

সभी ভেরিয়েবল লোকাল স্কোপে ঘোষণা করা হয়েছে এবং তাদের রেফারেন্স উপরের চিত্রে দেখা যাচ্ছে।
উপসংহার
এই আর্টিকেলে আমরা শিখেছি কিভাবে কয়েন চেঞ্জ সমস্যার পাইথন প্রোগ্রাম লিখতে হয়।