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

पायथन में लगातार K के लिए न्यूनतम आसन्न स्वैप खोजने का कार्यक्रम

मान लीजिए कि हमारे पास एक द्विआधारी सरणी संख्या है, और एक मान k है। एक चाल में, हम दो आसन्न सूचकांकों का चयन कर सकते हैं और उनके मूल्यों को स्वैप कर सकते हैं। हमें आवश्यक चालों की न्यूनतम संख्या ज्ञात करनी होगी ताकि अंकों में k क्रमागत 1 हो।

इसलिए, यदि इनपुट nums =[1,0,0,1,0,1,0,1], k =3 जैसा है, तो आउटपुट 2 होगा क्योंकि एक स्वैप में हम [1,0 से सरणी बना सकते हैं ,0,1,0,1,0,1] से [1,0,0,0,1,1,0,1], फिर [1,0,0,0,1,1,1,0] ।

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

  • जे:=0

  • वैल:=0

  • उत्तर :=999999

  • loc :=एक नई सूची

  • प्रत्येक अनुक्रमणिका i के लिए, और अंकों में x का मान करें, करें

    • अगर x गैर-शून्य है, तो

      • loc के अंत में i डालें

      • m :=भागफल (j + loc का आकार -1) /2

      • वैल :=वैल + लोक[-1] - loc[m] - भागफल (लोक-जे का आकार)/2

      • यदि लोकेशन की लंबाई - j> k, तो

        • m :=भागफल (j + loc का आकार) /2

        • वैल :=वैल - loc[m] - loc[j] - भागफल (लोक -j का आकार)/2

        • जे:=जे + 1

      • यदि loc -j का आकार k के समान है, तो

        • उत्तर :=न्यूनतम उत्तर और वैल

  • वापसी उत्तर

उदाहरण

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

def solve(nums, k):
   j = val = 0
   ans = 999999
   loc = []
   for i, x in enumerate(nums):
      if x:
         loc.append(i)
         m = (j + len(loc) - 1)//2
         val += loc[-1] - loc[m] - (len(loc)-j)//2
         if len(loc) - j > k:
            m = (j + len(loc))//2
            val -= loc[m] - loc[j] - (len(loc)-j)//2
            j += 1
         if len(loc)-j == k:
            ans = min(ans, val)
   return ans

nums = [1,0,0,1,0,1,0,1]
k = 3
print(solve(nums, k))

इनपुट

[1,0,0,1,0,1,0,1], 3

आउटपुट

2

  1. पायथन का उपयोग करके बाइनरी ग्रिड की व्यवस्था करने के लिए न्यूनतम स्वैप खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक n x n बाइनरी मैट्रिक्स है। हम इस पर एक ऑपरेशन कर सकते हैं जैसे, एक चरण में हम दो आसन्न पंक्तियों का चयन करते हैं और उन्हें स्वैप करते हैं। हमें आवश्यक न्यूनतम स्वैप की संख्या गिननी होगी, ताकि मैट्रिक्स के प्रमुख विकर्ण के ऊपर सभी नोड्स 0 हों। यदि ऐसा कोई समाधान नहीं है, तो

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

    मान लीजिए कि हमारे पास संख्याओं की दो सूचियाँ हैं जिन्हें अंक और लागत कहा जाता है। अब विचार करें, एक ऑपरेशन है जहां हम लागत लागत [i] के लिए संख्या [i] बढ़ा या घटा सकते हैं। हम इनमें से किसी भी संख्या में ऑपरेशन कर सकते हैं, और हम सभी तत्वों को अंकों में बराबर बनाना चाहते हैं। हमें आवश्यक न्यूनतम कुल

  1. संख्या के कारकों का न्यूनतम योग खोजने के लिए पायथन कार्यक्रम

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे - समस्या कथन किसी संख्या इनपुट को देखते हुए, दी गई संख्या के गुणनखंडों का न्यूनतम योग ज्ञात करें। यहां हम सभी कारकों और उनके संगत योग की गणना करेंगे और फिर उनमें से न्यूनतम का पता लगाएंगे। इसलिए संख्या के गुणनफल का न्यूनतम योग ज्