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

पायथन का उपयोग करके लक्ष्य सरणी बनाने के लिए न्यूनतम संख्या में फ़ंक्शन कॉल खोजने का कार्यक्रम

मान लीजिए कि हमारे पास निम्नलिखित फ़ंक्शन परिभाषा है:

def modify(arr, op, index):
   if op == 0:
      arr[index] += 1
   if op == 1:
      for i in range(len(arr)):
         arr[i] *=2

हमें किसी दिए गए सरणी संख्या को समान आकार के एक शून्य सरणी से बनाने के लिए आवश्यक न्यूनतम संख्या में फ़ंक्शन कॉल की आवश्यकता है?

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

हैं।
  • पहले चरण में दूसरे तत्व को 1 से बढ़ाएं, इसलिए सरणी [0,1,0]

    . है
  • इसे बनाने के लिए दुगना दूसरा तत्व [0,2,0]

  • तीसरे तत्व को 1 से बढ़ाएँ, इसलिए सरणी है [0,2,1]

  • इंडेक्स 1 से 2 तक डबल एलिमेंट, इसलिए ऐरे [0,4,2]

    . है
  • सभी तत्वों को 1 से बढ़ाएं [यहां कुल तीन ऑपरेशन]

इसलिए कुल 3+4 =7 ऑपरेशन आवश्यक हैं।

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

  • उत्तर :=दो तत्वों वाली एक सरणी 0 है

  • अंकों में प्रत्येक n के लिए, करें

    • डबल:=0

    • जबकि n शून्य नहीं है, करें

      • अगर n विषम है, तो

        • n :=n/2 का भागफल

        • डबल:=डबल + 1

      • अन्यथा,

        • n :=n - 1

        • ans[0] :=ans[0] + 1

    • ans[1] :=अधिकतम उत्तर[1] और दुगना

  • उत्तर के सभी तत्वों का रिटर्न योग

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

उदाहरण

def solve(nums):
   ans = [0, 0]
   for n in nums:
      double = 0
      while(n):
         if not n%2:
            n = n//2
            double+=1
         else:
            n-=1
            ans[0]+=1
            ans[1] = max(ans[1], double)
   return sum(ans)
nums = [1,5,3]
print(solve(nums))

इनपुट

[1,5,3]

आउटपुट

7

  1. सी प्रोग्राम रिकर्सिव फ़ंक्शन का उपयोग करके संख्याओं की जीसीडी खोजने के लिए

    समस्या C प्रोग्रामिंग भाषा में पुनरावर्ती फ़ंक्शन का उपयोग करके दिए गए दो नंबरों के लिए सबसे बड़ा सामान्य भाजक (GCD) खोजें। समाधान रिकर्सिव फ़ंक्शन का उपयोग करके दिए गए दो नंबरों के लिए सबसे बड़ा सामान्य भाजक (जीसीडी) खोजने का समाधान इस प्रकार है - एल्गोरिदम रिकर्सिव फ़ंक्शन का उपयोग करके दिए गए

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

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

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

    मान लीजिए कि हमारे पास एक स्ट्रिंग है जिसमें केवल दो अक्षर ए और बी हैं, हमें बीएस की सभी घटनाओं से पहले की सभी घटनाओं को प्राप्त करने के लिए एस से हटाए जाने वाले अक्षरों की न्यूनतम संख्या ढूंढनी होगी। इसलिए, यदि इनपुट S =AABAABB जैसा है, तो आउटपुट 1 होगा, क्योंकि हम AABBB प्राप्त करने के लिए अंतिम