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

पायथन में सभी एन कैंडी खरीदने के लिए न्यूनतम और अधिकतम राशि पाएं


मान लीजिए कोई कैंडी स्टोर है जहां N विभिन्न प्रकार की कैंडी उपलब्ध हैं और सभी N विभिन्न प्रकार की कैंडी की कीमतें दी गई हैं। स्टोर एक आकर्षक ऑफर भी प्रदान करता है। इस ऑफर के अनुसार, हम स्टोर से एक कैंडी खरीद सकते हैं और अधिकतम K विभिन्न प्रकार की अन्य कैंडी मुफ्त में प्राप्त कर सकते हैं। हमें सभी एन विभिन्न प्रकार की कैंडी खरीदने के लिए न्यूनतम राशि का पता लगाना होगा। हमें सभी एन विभिन्न प्रकार की कैंडी खरीदने के लिए अधिकतम राशि भी ढूंढनी होगी। दोनों ही मामलों में हमें प्रस्ताव का उपयोग करना चाहिए और अधिकतम संभव कैंडी वापस प्राप्त करनी चाहिए। यदि k या अधिक कैंडी उपलब्ध हैं, तो हमें प्रत्येक कैंडी खरीद के लिए k कैंडीज का चयन करना होगा। लेकिन, अगर k से कम कैंडी उपलब्ध हैं, तो हमें कैंडी खरीदने के लिए सभी कैंडी का चयन करना होगा।

इसलिए, यदि इनपुट मूल्य =[4, 3, 2, 5] और k =2 के समान है, तो आउटपुट न्यूनतम =5 और अधिकतम =9 होगा। ऐसा इसलिए है क्योंकि जब k 2 होता है, यदि हम एक कैंडी खरीदते हैं और हम अधिकतम दो और मुफ्त में ले सकते हैं। पहले मामले में हम 2 की कीमत वाली कैंडी खरीद सकते हैं और 4 और 5 की कीमत की कैंडी मुफ्त में ले सकते हैं, साथ ही हम 3 की कैंडी भी खरीद सकते हैं, इसलिए न्यूनतम लागत =2 + 3 =5. दूसरी ओर, दूसरे में यदि हम 5 की कीमत वाली कैंडी खरीदते हैं और 2 और 3 की कीमत की कैंडी मुफ्त में लेते हैं, या हम 4 की कैंडी भी खरीद सकते हैं। तो, अधिकतम लागत =4 + 5 =9.

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

  • एक फ़ंक्शन को परिभाषित करें get_min() । इसमें A,k

    . लगेगा
  • n :=A का आकार

  • सूची ए को क्रमबद्ध करें

  • रेस :=0, i:=0

  • जबकि n शून्य नहीं है, करें

    • रेस :=रेस + ए[i]

    • एन:=एन-के

    • मैं :=मैं + 1

  • रिटर्न रेस

  • एक फ़ंक्शन को परिभाषित करें get_max() । इसमें A, k

    . लगेगा
  • n :=A का आकार

  • सूची ए को क्रमबद्ध करें

  • रेस:=0, आईडीएक्स:=0

  • मैं:=n-1

  • जबकि i>=idx, करते हैं

    • रेस :=रेस + ए[i]

    • आईडीएक्स:=आईडीएक्स + के

    • मैं :=मैं - 1

  • रिटर्न रेस

  • मुख्य विधि से परिणाम प्राप्त करने के लिए इन दो कार्यों को कॉल करें

  • get_min(ए, के)

  • get_max(ए, के)

उदाहरण

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

def get_min(A,k):
   n = len(A)
   A.sort()
   res = 0
   i=0
   while(n):
      res += A[i]
      n = n-k
      i += 1
   return res
def get_max(A, k):
   n = len(A)
   A.sort()
   res = 0
   idx = 0
   i=n-1
   while(i>=idx):
      res += A[i]
      idx += k
      i -= 1
   return res

A = [4, 3, 2, 5]
k = 2
print(get_min(A, k),get_max(A, k))

इनपुट

[4, 3, 2, 5], 2

आउटपुट

5 9

  1. पायथन में सांप और सीढ़ी के खेल में न्यूनतम चाल का पता लगाने का कार्यक्रम

    मान लीजिए हम सांप-सीढ़ी का खेल खेल रहे हैं। हमारी एक शर्त है कि हम पासे पर कोई भी संख्या रोल कर सकते हैं जिसे हम पसंद कर सकते हैं। हम स्थिति 0 से शुरू करते हैं और हमारा गंतव्य स्थान 100 है, और हम गंतव्य तक पहुंचने के लिए कई बार पासा घुमाते हैं। यदि हमें बोर्ड पर सांप और सीढ़ी की स्थिति प्रदान की जात

  1. पायथन में सभी संभावित वैध पथों से अधिकतम अंक खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास दो सरणियाँ हैं nums1 और nums2। एक वैध पथ निम्नानुसार परिभाषित किया गया है - पार करने के लिए nums1 या nums2 चुनें (इंडेक्स-0 से)। सरणी को बाएँ से दाएँ पार करें। अब, यदि हम nums1 और nums2 में मौजूद किसी भी मान से आगे बढ़ रहे हैं तो हम पथ को अन्य सरणी में बदल सकते हैं। य

  1. पायथन में सभी बिंदुओं को जोड़ने के लिए न्यूनतम लागत खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास बिंदु (x, y) के रूप में कुछ बिंदुओं के साथ बिंदु नामक एक सरणी है। अब दो बिंदुओं (xi, yi) और (xj, yj) को जोड़ने की लागत उनके बीच मैनहट्टन दूरी है, सूत्र है |xi - xj| + |yi - yj|। हमें सभी बिंदुओं को जोड़ने के लिए न्यूनतम लागत का पता लगाना होगा। इसलिए, यदि इनपुट पॉइंट्स की तरह