কম্পিউটার

পাইথনে পরিবর্তন করার জন্য প্রয়োজনীয় কয়েনের সংখ্যা খুঁজে বের করার প্রোগ্রাম


ধরুন আমাদের কাছে বিভিন্ন মূল্যের মুদ্রা রয়েছে (1,5,10,25) এবং মোট টাকার পরিমাণ। আমাদের একটি ফাংশন সংজ্ঞায়িত করতে হবে কম সংখ্যক কয়েন গণনা করার জন্য যা আমাদের সেই পরিমাণ তৈরি করতে হবে। সুতরাং যদি ইনপুট 64 হয়, আউটপুট 7 হয়। এটি 25 + 25 + 10 + 1 + 1 + 1 + 1 =64 ব্যবহার করে গঠিত হয়।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • যদি পরিমাণ =0, তাহলে ফেরত 0
  • যদি ন্যূনতম কয়েন অ্যারে> পরিমাণ, তাহলে ফেরত দিন -1
  • ডিপি নামক একটি অ্যারে সংজ্ঞায়িত করুন, আকারের পরিমাণ + 1, এবং এটি -1 দিয়ে পূরণ করুন
  • আমি রেঞ্জ কয়েন অ্যারে
      এর জন্য
    • যদি i> dp – 1 এর দৈর্ঘ্য হয়, তাহলে পরবর্তী অংশটি এড়িয়ে যান, পরবর্তী পুনরাবৃত্তির জন্য যান
    • dp[i] :=1
    • j এর জন্য রেঞ্জ i + 1 থেকে পরিমাণ
      • যদি dp[j – 1] =-1 হয়, তাহলে পরবর্তী অংশটি এড়িয়ে যান, পরবর্তী পুনরাবৃত্তির জন্য যান
      • অন্যথায় যদি dp[j] =-1 হয়, তাহলে dp[j] :=dp[j - i] + 1
      • অন্যথায় dp[j] :=ন্যূনতম dp[j] এবং dp[j – i] + 1
  • রিটার্ন ডিপি[অ্যামাউন্ট]

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

class Solution(object):
   def coinChange(self, amount):
      coins = [1,5,10,25]
      if amount == 0 :
         return 0
      if min(coins) > amount:
         return -1
      dp = [-1 for i in range(0, amount + 1)]
      for i in coins:
         if i > len(dp) - 1:
            continue
         dp[i] = 1
         for j in range(i + 1, amount + 1):
            if dp[j - i] == -1:
               continue
            elif dp[j] == -1:
               dp[j] = dp[j - i] + 1
            else:
               dp[j] = min(dp[j], dp[j - i] + 1)
      return dp[amount]
ob1 = Solution()
print(ob1.coinChange(64))

ইনপুট

64

আউটপুট

7

  1. পাইথনে একটি লাইনে সম্ভাব্য অবস্থানের সংখ্যা খুঁজে বের করার জন্য প্রোগ্রাম

  2. পাইথন প্রোগ্রাম একটি তালিকার ক্ষুদ্রতম সংখ্যা খুঁজে বের করতে

  3. একটি তালিকায় দ্বিতীয় বৃহত্তম সংখ্যা খুঁজে পেতে পাইথন প্রোগ্রাম

  4. পাইথন প্রোগ্রাম একটি তালিকায় সবচেয়ে বড় সংখ্যা খুঁজে বের করতে