Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में दिए गए सिक्कों के सेट से परिवर्तन करने के लिए आवश्यक सिक्कों की संख्या खोजने का प्रोग्राम


मान लीजिए हमारे पास विभिन्न मूल्यवर्ग के सिक्के हैं और पैसे की कुल राशि amount है। हमें एक फ़ंक्शन परिभाषित करना है जो उस राशि को बनाने के लिए आवश्यक सबसे कम सिक्कों की संख्या की गणना करे। जब उस राशि को सिक्कों के किसी भी संयोजन द्वारा पूरा नहीं किया जा सकता, तो -1 वापस करें। इसलिए यदि इनपुट [1,2,5] है, और राशि 64 है, तो आउटपुट 14 है। यह 12*5 + 2 + 2 = 64 का उपयोग करके बनता है।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे −

  • यदि amount = 0, तो 0 वापस करें
  • यदि सिक्कों की सरणी का न्यूनतम > amount, तो -1 वापस करें
  • dp नामक एक सरणी परिभाषित करें, आकार amount + 1, और इसे -1 से भरें
  • i के लिए सिक्कों की सरणी में रेंज
    • यदि i > dp की लंबाई - 1, तो अगले भाग को छोड़ें, अगले पुनरावृत्ति के लिए जाएं
    • dp[i] := 1
    • j के लिए i + 1 से amount तक की रेंज
      • यदि dp[j - 1] = -1, तो अगले भाग को छोड़ें, अगले पुनरावृत्ति के लिए जाएं
      • अन्यथा यदि dp[j] = -1, तो dp[j] := dp[j - i] + 1
      • अन्यथा dp[j] := dp[j] और dp[j - i] + 1 का न्यूनतम
  • dp[amount] वापस करें

बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें −

उदाहरण

class Solution(object):    def coinChange(self, coins, amount):       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([1,2,5],64))

इनपुट

[1,2,5], 64

आउटपुट

14

  1. Python से सबट्री में समान लेबल वाले नोड्स की संख्या कैसे ढूंढें? Python से सबट्री में समान लेबल वाले नोड्स की संख्या कैसे ढूंढें?

    रूटेड ट्री में प्रत्येक नोड के लिए, उसके सबट्री में उसी लेबल वाले नोड्स की संख्या ढूंढें (लेबल्स लोअरकेस लेटर्स)। एल्गोरिदम एज लिस्ट से ग्राफ बनाएं (अनडायरेक्टेड)। लेबल मैप बनाएं। रिकर्सिव DFS r(ni): चिल्ड्रन के काउंटर्स मर्ज करें, अपना लेबल जोड़ें, R[ni] = count[label]। पैरेंट लिंक हटाकर साइकिल अव

  1. Python प्रोग्राम से सूची में सबसे छोटी संख्या खोजना Python प्रोग्राम से सूची में सबसे छोटी संख्या खोजना

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक सूची दी गई है, हमें सूची में उपलब्ध सबसे छोटी संख्या प्रदर्शित करने की आवश्यकता है। यहां हम या तो सूची को क्रमबद्ध करके सबसे छोटा तत्व प्राप्त कर सकते हैं या बिल्ट-इन min() फ़ंक्शन का उपयोग करके सबसे छोटा तत्

  1. - पायथन प्रोग्राम: सेट का उपयोग करके दिए गए स्ट्रिंग में वॉवेल्स की संख्या गिनना

    इस प्रोग्राम में, एक यूजर इनपुट स्ट्रिंग दी गई है। हमें इस स्ट्रिंग में वॉवेल्स की संख्या गिननी है। यहां हम पायथन में सेट का उपयोग करते हैं। सेट एक अनऑर्डर्ड कलेक्शन डेटा टाइप है जो इटरेबल, म्यूटेबल है और इसमें कोई डुप्लिकेट एलिमेंट्स नहीं होते।उदाहरणInput: str1=pythonprogram Output: 3एल्गोरिदमचरण 1