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

पायथन का उपयोग करके मी बुके बनाने के लिए न्यूनतम दिनों का पता लगाने का कार्यक्रम

मान लीजिए कि हमारे पास पूर्णांकों के साथ एक सरणी है जिसे अंक कहा जाता है, हमारे पास अन्य दो मान m और k भी हैं। अब, हमें मी बुके बनाने की जरूरत है। एक गुलदस्ता बनाने के लिए हमें बगीचे से लगे k फूलों की आवश्यकता होती है। यहाँ बगीचे में n अलग-अलग फूल होते हैं, ith फूल खिलने के दिन [i] खिलेगा। प्रत्येक फूल का उपयोग केवल एक गुलदस्ते के अंदर किया जा सकता है। बगीचे से मी के गुलदस्ते बनाने के लिए हमें कम से कम कितने दिनों तक प्रतीक्षा करनी होगी। अगर हम मी बुके नहीं बना सकते हैं, तो -1 लौटा दें।

इसलिए, यदि इनपुट ब्लूमडे =[5,5,5,5,10,5,5] m =2 k =3 जैसा है, तो आउटपुट 10 होगा क्योंकि हमें 2 (m =2) गुलदस्ते चाहिए और प्रत्येक को चाहिए 3 फूल हैं।

  • 5 दिन के बाद [x, x, x, x, _, x, x], हम पहले तीन फूलों का एक गुलदस्ता बना सकते हैं जो खिले थे, लेकिन दूसरा गुलदस्ता नहीं बना सकते थे

  • दिन 10 के बाद:[x, x, x, x, x, x, x], अब हम अलग-अलग तरीकों से दो गुलदस्ते बना सकते हैं।

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

  • n :=ब्लूमडे का आकार

  • अगर एम * के> एन, तो

    • वापसी -1

  • संभव() फ़ंक्शन को परिभाषित करें। इसमें x लगेगा

  • गिनती :=0, गुलदस्ते :=0

  • ब्लूमडे में प्रत्येक d के लिए, करें

    • अगर डी <=एक्स, तो

      • गिनती :=गिनती + 1

      • अगर गिनती k के समान है, तो

        • गुलदस्ते :=गुलदस्ते + 1

        • गिनती :=0

    • अन्यथा,

      • गिनती :=0

  • अगर गुलदस्ते>=मी, अन्यथा गलत हैं तो सही लौटें

  • मुख्य विधि से निम्न कार्य करें -

  • बाएँ:=0, दाएँ:=1 + अधिकतम खिलने का दिन

  • जबकि बाएं <दाएं, करें

    • मध्य:=(बाएं+दाएं)/2

    • यदि संभव हो (मध्य) सत्य है, तो

      • दाएं:=मध्य

    • अन्यथा,

      • बायां :=मध्य + 1

  • यदि संभव हो (बाएं) सत्य है, तो

    • बाएं लौटें

  • अन्यथा बाएं लौटें + 1

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

उदाहरण

def solve(bloomDay, m, k):
   n = len(bloomDay)
   if m * k > n:
      return -1
   def possible(x):
      count = 0
      bouquets = 0
      for d in bloomDay:
         if d <= x:
            count += 1
            if count == k:
               bouquets += 1
               count = 0
         else:
            count = 0
      return bouquets >= m
   left, right = 0, max(bloomDay) + 1
   while left < right:
      mid = (left + right)//2
      if possible(mid):
         right = mid
      else:
         left = mid + 1
   if possible(left):
      return left
   else:
      return left + 1
bloomDay = [5,5,5,5,10,5,5]
m = 2
k = 3
print(solve(bloomDay, m, k))

इनपुट

[5,5,5,5,10,5,5], 2, 3

आउटपुट

10

  1. पायथन का उपयोग करके सभी नोड्स तक पहुंचने के लिए न्यूनतम संख्या में कोने खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक निर्देशित चक्रीय ग्राफ है, जिसमें n कोने हैं और नोड्स 0 से n-1 तक गिने जाते हैं, ग्राफ को किनारे की सूची द्वारा दर्शाया जाता है, जहां किनारों [i] =(यू, वी) नोड यू से एक निर्देशित किनारे का प्रतिनिधित्व करता है। नोड वी। हमें शिखर का सबसे छोटा सेट ढूंढना है जिससे ग्राफ में सभ

  1. पायथन में एक नंबर से दूसरे नंबर बनाने के लिए आवश्यक न्यूनतम संख्या में संचालन खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक नंबर स्टार्ट है और दूसरा नंबर एंड (स्टार्ट <एंड) है, हमें इन ऑपरेशंस का उपयोग करके स्टार्ट टू एंड को कन्वर्ट करने के लिए आवश्यक ऑपरेशंस की न्यूनतम संख्या ज्ञात करनी होगी - 1 से वृद्धि 2 से गुणा करें इसलिए, यदि इनपुट प्रारंभ =5, अंत =11 जैसा है, तो आउटपुट 2 होगा, क्योंकि

  1. पायथन में एक स्ट्रिंग सबस्ट्रिंग बनाने के लिए आवश्यक न्यूनतम संख्या में संचालन खोजने के लिए कार्यक्रम

    मान लीजिए कि हमारे पास दो तार s और t हैं, हमें t को s का विकल्प बनाने के लिए s के लिए आवश्यक न्यूनतम संक्रियाएँ ज्ञात करनी होंगी। अब, प्रत्येक ऑपरेशन में, हम s में कोई भी स्थिति चुन सकते हैं और उस स्थिति के वर्ण को किसी अन्य वर्ण में बदल सकते हैं। इसलिए, यदि इनपुट s =abbpqr, t =bbxy जैसा है, तो आउट