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

पायथन में सभी खंडों के XOR को शून्य के बराबर बनाने का कार्यक्रम

मान लीजिए कि हमारे पास nums नामक एक सरणी है और दूसरा मान k है। एक खंड का एक्सओआर [बाएं, दाएं] (बाएं <=दाएं) उन सभी तत्वों का एक्सओआर है जिनके सूचकांक बाएं और दाएं (समावेशी) के बीच हैं।

हमें ऐरे में बदलने के लिए तत्वों की न्यूनतम संख्या इस तरह ढूंढनी होगी कि आकार k के सभी खंडों का XOR शून्य के समान हो।

इसलिए, यदि इनपुट संख्या =[3,4,5,2,1,7,3,4,7], के =3 की तरह है, तो आउटपुट 3 होगा क्योंकि हम सूचकांक 2, 3 पर तत्वों को संशोधित कर सकते हैं, 4 सरणी बनाने के लिए [3,4,7,3,4,7,3,4,7]।

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

  • सीमा :=1024

  • अस्थायी:=एक सरणी बनाएं जिसका आकार LIMIT x k है, और 0 से भरें

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

    • अस्थायी [मैं मॉड के, एक्स]:=अस्थायी [मैं मॉड के, एक्स] + 1

  • dp:=आकार की एक सरणी LIMIT और -2000 से भरें

  • डीपी [0] :=0

  • अस्थायी में प्रत्येक पंक्ति के लिए, करें

    • मैक्सप्रेव :=अधिकतम डीपी

    • new_dp :=आकार की एक सरणी LIMIT और maxprev से भरें

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

      • अगर cnt> 0, तो

        • प्रत्येक अनुक्रमणिका j और dp में प्रचलित मान के लिए, करें

          • new_dp[i XOR j] :=अधिकतम new_dp[i XOR j] और पिछला+cnt

    • डीपी:=new_dp

  • अंकों का वापसी आकार - new_dp[0]

उदाहरण

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

def solve(nums, k):
   LIMIT = 2**10
   temp = [[0 for _ in range(LIMIT)] for _ in range(k)]
   for i,x in enumerate(nums):
      temp[i%k][x] += 1

   dp = [-2000 for _ in range(LIMIT)]
   dp[0] = 0
   for row in temp:
      maxprev = max(dp)
      new_dp = [maxprev for _ in range(LIMIT)]
      for i,cnt in enumerate(row):
         if cnt > 0:
            for j,prev in enumerate(dp):
               new_dp[i^j] = max(new_dp[i^j], prev+cnt)
         dp = new_dp
   return len(nums) - new_dp[0]

nums = [3,4,5,2,1,7,3,4,7]
k = 3
print(solve(nums, k))

इनपुट

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

आउटपुट

-9

  1. पायथन में भारतीय ध्वज बनाने का कार्यक्रम

    ग्राफ बनाने के लिए पायथन के पुस्तकालयों में बहुत व्यापक विशेषताएं हैं जो हमें न केवल चार्ट दे सकती हैं बल्कि हमें झंडे जैसे अन्य आरेखों को खींचने के लिए लचीलापन भी दे सकती हैं। उस अर्थ में उन मॉड्यूलों में कलात्मक स्पर्श होता है। इस लेख में हम देखेंगे कि numpy और matplotlib पुस्तकालयों का उपयोग करके

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

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन − हमें एक डिक्शनरी दी गई है, और हमें डिक्शनरी में 3 सबसे ज्यादा वैल्यू प्रिंट करने की जरूरत है। समस्या कथन के तीन दृष्टिकोण नीचे दिए गए हैं: दृष्टिकोण 1 - चलने योग्य शब्दकोश से योग की गणना करना उदाहरण # sum function d

  1. पायथन कार्यक्रम सूची में सभी संख्याओं को गुणा करने के लिए?

    सबसे पहले हम उपयोगकर्ता इनपुट के लिए 3 सूची बनाते हैं। यहां हम ट्रैवर्सिंग तकनीक का उपयोग करते हैं। उत्पाद के मूल्य को 1 से प्रारंभ करते हुए, सभी तत्वों को पार करें और सूची के अंत तक प्रत्येक संख्या को उत्पाद के साथ एक-एक करके गुणा करें। उदाहरण Input: A=[5,6,3] Output:90 Explanation:5*6*3 एल्गोरिद