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

पायथन में खाए गए सेबों की अधिकतम संख्या खोजने का कार्यक्रम

मान लीजिए कि हमारे पास दो सरणियाँ हैं जिन्हें दिन कहा जाता है और एक ही लंबाई के सेब n हैं। एक विशेष प्रकार का सेब का पेड़ है जो लगातार n दिनों तक हर दिन सेब उगाता है। सातवें दिन, यह सेबों की संख्या [i] सेब उगाता है और जो दिनों [i] दिनों के बाद सड़ जाएगा, इसलिए हम इसे ऐसे कह सकते हैं कि जिस दिन मैं + दिन [i] सेब सड़ जाएगा और खाया नहीं जा सकता। कुछ दिनों में। यदि सेब [i] =0, और दिन [i] =0, तो यह इंगित करता है कि पहले दिन, सेब का पेड़ कोई सेब नहीं उगा रहा है। हम एक दिन में ज्यादा से ज्यादा एक सेब ले सकते हैं। (हम पहले n दिनों के बाद भी खाना जारी रख सकते हैं)। यहां हमें यह पता लगाना है कि हम कितने सेब खा सकते हैं।

इसलिए, यदि इनपुट सेब की तरह है =[1,2,3,5,2] दिन =[3,2,1,4,2], तो आउटपुट 7 होगा क्योंकि -

  • पहले दिन हम एक सेब खाते हैं जो पहले दिन बढ़ा था।

  • दूसरे दिन हम एक सेब खाते हैं जो दूसरे दिन बड़ा हुआ।

  • तीसरे दिन हम एक सेब खाते हैं जो दूसरे दिन बड़ा हुआ। लेकिन इस दिन के बाद तीसरे दिन उगने वाले सेब सड़ जाएंगे।

  • 4 से 7 के दिनों में हम चौथे दिन उगे सेब खाते हैं।

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

  • मिनहीप :=एक नया खाली ढेर
  • दिन :=0, रेस :=0
  • i के लिए 0 से लेकर सेब के आकार -1 तक के लिए
    • दिन:=मैं
    • जबकि minheap खाली नहीं है और minheap के शीर्ष का मूल्य - दिन, do
      • मिनहेप से शीर्ष तत्व निकालें
    • nbrApple:=सेब[i]
    • समाप्ति :=i + दिन[i]-1
    • अगर nbrApple> 0, तो
      • मिनहेप में (एक्सपायरी, nbrApple) पेयर डालें
    • यदि मिनहीप खाली नहीं है, तो
      • (तारीख, सेब) :=minheap का शीर्ष तत्व और इसे हीप से हटा दें
      • रेस :=रेस + 1
      • अगर सेब> 1, तो
        • मिनहेप में (तारीख, सेब-1) जोड़ी डालें
  • जबकि minheap खाली नहीं है, करें
    • दिन :=दिन + 1
    • जबकि minheap खाली नहीं है और minheap के शीर्ष का मूल्य <दिन, do
      • मिनहेप से शीर्ष तत्व निकालें
    • अगर मिनहीप खाली है, तो
      • लूप से बाहर आएं
    • (तारीख, सेब) :=minheap के ऊपर और इसे हीप से हटा दें
    • रेस :=रेस + 1
    • अगर सेब> 1, तो
      • मिनहेप में (तारीख, सेब-1) जोड़ी डालें
  • रिटर्न रेस

उदाहरण

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

import heapq
def solve(apples, days):
   minheap = []
   heapq.heapify(minheap)
   day = 0
   res = 0
   for i in range(len(apples)):
      day = i

      while minheap and minheap[0][0] < day:
         heapq.heappop(minheap)

      nbrApple = apples[i]
      expiration = i + days[i]-1

      if nbrApple > 0:
         heapq.heappush(minheap, (expiration, nbrApple))

      if minheap:
         date, apple = heapq.heappop(minheap)
         res += 1
         if apple > 1:
            heapq.heappush(minheap, (date, apple-1))

   while minheap:
      day += 1
      while minheap and minheap[0][0] < day:
         heapq.heappop(minheap)
      if minheap == []:
         break
      date, apple = heapq.heappop(minheap)
      res += 1
      if apple > 1:
         heapq.heappush(minheap, (date, apple-1))

   return res

apples = [1,2,3,5,2]
days = [3,2,1,4,2]
print(solve(apples, days))

इनपुट

[1,2,3,5,2],[3,2,1,4,2]

आउटपुट

7

  1. पायथन में अधिकतम भवन ऊंचाई खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक मान n है और जोड़े की एक और सूची है जिसे प्रतिबंध कहा जाता है। हम एक शहर में नई इमारतें बनाना चाहते हैं। लेकिन कुछ प्रतिबंध हैं। हम एक लाइन में बना सकते हैं और इमारतों को 1 से n तक लेबल किया जाता है। प्रतिबंधों के दो पैरामीटर हैं, इसलिए प्रतिबंध [i] =(id_i, max_height_i) इंग

  1. 1 की अधिकतम संख्या के साथ पंक्ति खोजने के लिए मानचित्र फ़ंक्शन का उपयोग करके पायथन प्रोग्राम

    2D सरणी दी गई है और सरणियों के तत्व 0 और 1 हैं। सभी पंक्तियों को क्रमबद्ध किया गया है। हमें 1 की अधिकतम संख्या वाली पंक्ति ढूंढनी है। यहां हम मानचित्र () का उपयोग करते हैं। मानचित्र फ़ंक्शन कार्यात्मक प्रोग्रामिंग के लिए उपयोग किए जाने वाले पायथन बिल्ट-इन्स में सबसे सरल है। ये उपकरण अनुक्रमों और अन्

  1. पायथन कार्यक्रम अधिकतम तीन।

    तीन नंबर ए बी और सी को देखते हुए, हमारा काम यह है कि हमें दी गई संख्या में से अधिकतम तत्व को खोजना है। उदाहरण Input: a = 2, b = 4, c = 3 Output: 4 एल्गोरिदम Step 1: input three user input number. Step2: Add three numbers to list. Step 3: Using max() function to find the greatest number max(lst).