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

पायथन में अधिकतम सबरे मिन-प्रोडक्ट खोजने का कार्यक्रम

मान लीजिए कि हमारे पास एक सरणी संख्या है, हमें प्रत्येक गैर-खाली उप-अंकों के अधिकतम न्यूनतम-उत्पाद को खोजना होगा। चूंकि उत्तर काफी बड़ा हो सकता है, इसे मॉड्यूलो 10^9+7 में लौटाएं। सरणी का न्यूनतम-उत्पाद सरणी के योग से गुणा किए गए सरणी में न्यूनतम मान के बराबर है। तो अगर हमारे पास एक सरणी है जैसे [4,3,6] (न्यूनतम मान 3 है) 3*(4+3+6) =3*13 =39 का एक न्यूनतम-उत्पाद है।

इसलिए, यदि इनपुट संख्या =[2,3,4,3] की तरह है, तो आउटपुट 30 होगा क्योंकि हम परिणाम को अधिकतम करने के लिए उपसरणी [3,4,3] प्राप्त कर सकते हैं, इसलिए 3*(3+4+ 3) =3*10 =30.

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

  • मी :=10^9+7

  • स्टैक :=एक नया स्टैक

  • rsum :=0, Res :=0

  • अंकों के अंत में 0 डालें

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

    • जबकि स्टैक खाली नहीं है और अंक [स्टैक के शीर्ष का सूचकांक]>=v, करते हैं

      • index, val) :=स्टैक के ऊपर और इसे स्टैक से पॉप करें

      • arrSum:=rsum

      • यदि स्टैक खाली नहीं है, तो

        • arrSum:=rsum - स्टैक के शीर्ष का मान

      • res:=अधिकतम रेस और (nums[index]*arrSum)

    • rsum :=rsum + v

    • स्टैक के अंत में पुश (i, rsum) करें

  • रिटर्न रेस मॉड एम

उदाहरण

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

def solve(nums):
   m = int(1e9+7)
   stack = []
   rsum = 0
   res = 0

   nums.append(0)

   for i, v in enumerate(nums):
      while stack and nums[stack[-1][0]] >= v:
         index, _ = stack.pop()

         arrSum=rsum

         if stack:
            arrSum=rsum-stack[-1][1]

         res=max(res, nums[index]*arrSum)

      rsum += v
      stack.append((i, rsum))

   return res % m

nums = [2,3,4,3]
print(solve(nums))

इनपुट

[2,3,4,3]

आउटपुट

30

  1. पायथन में अधिकतम भवन ऊंचाई खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक मान n है और जोड़े की एक और सूची है जिसे प्रतिबंध कहा जाता है। हम एक शहर में नई इमारतें बनाना चाहते हैं। लेकिन कुछ प्रतिबंध हैं। हम एक लाइन में बना सकते हैं और इमारतों को 1 से n तक लेबल किया जाता है। प्रतिबंधों के दो पैरामीटर हैं, इसलिए प्रतिबंध [i] =(id_i, max_height_i) इंग

  1. पायथन में एक श्रेणी में नोड्स की संख्या खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक बीएसटी है, और हमारे पास बाएं और दाएं सीमाएं एल और आर भी हैं, हमें रूट में उन सभी नोड्स की गिनती ढूंढनी है जिनके मान एल और आर (समावेशी) के बीच मौजूद हैं। तो, अगर इनपुट पसंद है l =7, r =13, तो आउटपुट 3 होगा, क्योंकि तीन नोड हैं:8, 10, 12. इसे हल करने के लिए, हम इन चरणों

  1. अधिकतम तीन नंबर खोजने के लिए पायथन प्रोग्राम

    इस ट्यूटोरियल में, हम एक प्रोग्राम लिखने जा रहे हैं जो तीन अंकों से अधिकतम राशि का पता लगाता है। हमारे पास तीन संख्याएँ होंगी, और हमारा लक्ष्य उन तीन संख्याओं में से अधिकतम संख्या ज्ञात करना है। आइए बेहतर समझ के लिए कुछ नमूना परीक्षण मामलों को देखें। Input: a, b, c = 2, 34, 4 Output: 34 Input: a