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

पायथन में अंकों पर अधिकतम k आसन्न स्वैप के बाद न्यूनतम संभव पूर्णांक खोजने का कार्यक्रम

मान लीजिए कि हमारे पास एक बहुत बड़ी पूर्णांक संख्या का प्रतिनिधित्व करने वाली num नामक एक स्ट्रिंग है और एक अन्य मान k भी है। हम मूल्यों के किन्हीं दो आसन्न अंकों को अधिकतम k बार स्वैप कर सकते हैं। हमें वह न्यूनतम मूल्य खोजना होगा जो हम प्राप्त कर सकते हैं।

इसलिए, यदि इनपुट num ="5432" k =4 जैसा है, तो आउटपुट 2453 होगा क्योंकि पहले नंबर पर 5432 है। फिर पहले चरण के बाद यह 4532, फिर 4523, फिर 4253 और अंतिम चरण 2453 पर होगा।

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

  • min_num :=अंकों के अंकों को क्रमबद्ध करें

  • मैं :=0, to_find :=0

  • जबकि संख्या min_num और k> 0 के समान नहीं है और i <संख्या का आकार, करें

    • indx :=आइटम की अनुक्रमणिका to_find अनुक्रमणिका i से संख्या में

    • जबकि इंडेक्स -1 के समान नहीं है, करें

      • अगर इंडेक्स - मैं <=के, तो

        • संख्या:=संख्या [सूचकांक 0 से i-1 तक] संयुग्मित संख्या [सूचकांक] संघटक [अनुक्रमणिका i से indx-1] संयुग्मित संख्या [सूचकांक indx+1 से अंत तक]

        • k :=k -(इंडेक्स - i)

        • मैं :=मैं + 1

        • to_find :=0

        • indx :=आइटम की अनुक्रमणिका to_find अनुक्रमणिका i से संख्या में

      • अन्यथा,

        • लूप से बाहर आएं

    • to_find :=to_find + 1

  • वापसी संख्या

उदाहरण

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

def solve(num, k):
   min_num = sorted(list(num))
   min_num = ''.join(min_num)
   i = 0
   to_find = 0
   while num != min_num and k > 0 and i < len(num):
      indx = num.find(str(to_find), i)
      while indx != -1:
         if indx - i <= k:
            num = num[:i] + num[indx] + num[i:indx] + num[indx+1:]
            k -= (indx - i)
            i += 1
            to_find = 0
            indx = num.find(str(to_find), i)
         else:
            break
      to_find += 1
   return num

num = "5432"
k = 4
print(solve(num, k))

इनपुट

"5432", 4

आउटपुट

2453

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

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

  1. न्यूनतम संख्या रंग खोजने का कार्यक्रम पायथन में विलय के बाद रहता है

    मान लीजिए हमारे पास रंगों की एक सूची है (आर, जी, बी)। अब अगर दो अलग-अलग रंग एक-दूसरे के बगल में हों तो वे तीसरे रंग की एक ही रंग की वस्तु में बदल सकते हैं। हमें ऐसे परिवर्तनों के किसी भी संभावित क्रम के बाद शेष बची सबसे छोटी संख्या ज्ञात करनी होगी। इसलिए, यदि इनपुट रंग =[G, R, G, B, R] जैसा है, तो

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

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