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

पायथन में प्रत्येक बॉक्स में सभी गेंदों को स्थानांतरित करने के लिए न्यूनतम संख्या में संचालन खोजने का कार्यक्रम

मान लीजिए कि हमारे पास एक बाइनरी स्ट्रिंग है जिसे बॉक्स कहा जाता है, जहां बॉक्स [i] '0' इंगित करता है कि ith बॉक्स खाली है, और '1' इंगित करता है कि इसमें एक गेंद है। अब, एक ऑपरेशन में, हम एक बॉक्स से एक गेंद को आसन्न बॉक्स में ले जा सकते हैं। ऐसा करने के बाद, कुछ बक्सों में एक से अधिक गेंदें हो सकती हैं। हमें आकार n का एक सरणी उत्तर खोजना है, जहां उत्तर [i] सभी गेंदों को ith बॉक्स में ले जाने के लिए आवश्यक न्यूनतम संख्या में संचालन है।

इसलिए, यदि इनपुट बॉक्स ="1101" जैसा है, तो आउटपुट [4, 3, 4, 5]

होगा।
  • सभी गेंदों को पहले बॉक्स पर रखने के लिए, हमें बॉक्स 2 से एक ऑपरेशन और आखिरी गेंद से तीन ऑपरेशन करने होंगे, इसलिए कुल 4 ऑपरेशन करने होंगे।

  • सभी गेंदों को दूसरे बॉक्स पर रखने के लिए, हमें बॉक्स 1 से एक ऑपरेशन और आखिरी गेंद से दो ऑपरेशन लेने होंगे, इसलिए कुल 3 ऑपरेशन करने होंगे।

  • सभी गेंदों को तीसरे बॉक्स पर रखने के लिए, हमें बॉक्स 2 से और आखिरी में एक ऑपरेशन और बॉक्स 1 से दो ऑपरेशन लेने होंगे, इसलिए कुल 4 ऑपरेशन करने होंगे।

  • सभी गेंदों को अंतिम बॉक्स पर रखने के लिए, हमें बॉक्स 1 से तीन ऑपरेशन और बॉक्स 2 से दो ऑपरेशन लेने होंगे, इसलिए कुल 5 ऑपरेशन करने होंगे।

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

  • बाएँ:=0, दाएँ:=0, जिला:=0

  • मैं के लिए 0 से लेकर बक्सों के आकार -1 तक के लिए, करें

    • अगर बॉक्स [i] "1" के समान है, तो

      • जिला:=जिला + आई

      • अगर मैं 0 के समान हूं, तो

        • बाएँ :=बाएँ + 1

      • अन्यथा,

        • दाएँ :=दाएँ + 1

  • arr :=एक सूची और शुरू में इसे डिस्टर्ब करें

  • मैं के लिए 1 से लेकर बक्से के आकार -1 तक, करो

    • गिरफ्तारी के अंत में arr[i-1] + बाएँ - दाएँ डालें

    • अगर बॉक्स [i] "1" के समान है, तो

      • बाएँ :=बाएँ + 1

      • दाएँ :=दाएँ - 1

  • वापसी गिरफ्तारी

उदाहरण

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

def solve(boxes):
   left = 0
   right = 0

   dist = 0
   for i in range(len(boxes)):
      if boxes[i] == "1":
         dist += i
         if i == 0:
            left += 1
         else:
            right += 1
   arr = [dist]
   for i in range(1, len(boxes)):
      arr.append(arr[i-1] + left - right)
      if boxes[i] == "1":
         left += 1
         right -= 1
   return arr

boxes = "1101"
print(solve(boxes))

इनपुट

"1101"

आउटपुट

[4, 3, 4, 5]

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

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

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

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

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

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