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

पायथन में सरणी को तीन उप-सरणी में विभाजित करने के तरीकों की संख्या खोजने का कार्यक्रम

मान लीजिए कि हमारे पास अंक नामक एक सरणी है, हमें इस सरणी संख्याओं को विभाजित करने के अच्छे तरीकों की संख्या ज्ञात करनी है। उत्तर बहुत बड़ा हो सकता है इसलिए रिटर्न परिणाम मॉड्यूलो 10^9 + 7. यहां एक सरणी का विभाजन (पूर्णांक तत्वों के साथ) अच्छा है यदि सरणी को क्रमशः बाएं से दाएं तीन गैर-रिक्त सन्निहित उप-सरणी में विभाजित किया गया है, और योग का योग बाईं ओर के तत्व मध्य भाग में तत्वों के योग से कम या उसके बराबर होते हैं, और मध्य भाग में तत्वों का योग दाईं ओर के तत्वों के योग से कम या बराबर होता है।

इसलिए, यदि इनपुट संख्या =[2,3,3,3,7,1] की तरह है, तो आउटपुट 3 होगा क्योंकि बंटवारे के तीन अलग-अलग तरीके हैं,

  • [2],[3],[3,3,7,1]
  • [2],[3,3],[3,7,1]
  • [2,3],[3,3],[7,1]

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

  • n :=अंकों का आकार,
  • म :=10^9+7
  • ss :=आकार की एक सरणी (1+n) और 0 से भरें
  • प्रत्येक इंडेक्स के लिए i और वैल्यू वैल्यू इन nums , do
    • ss[i] :=ss[i-1] + वैल
  • r :=0, rr :=0, ans :=0
  • 1 से n-2 की श्रेणी में l के लिए, करें
    • r :=अधिकतम r और l+1
    • जबकि r
    • r :=r + 1
  • rr :=अधिकतम rr और r
  • जबकि rr =ss[rr+1] - ss[l], do
    • rr :=rr + 1
  • अगर ss[l]> ss[r] - ss[l], तो
    • लूप से बाहर आएं
  • अगर ss[r] - ss[l]> ss[n] - ss[r], तो
    • अगले पुनरावृत्ति के लिए जाएं
  • उत्तर :=(Ans + rr - r + 1) मॉड m
  • वापसी उत्तर
  • उदाहरण

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

    def solve(nums):
       n, m = len(nums), 10**9+7
       ss = [0] * (1+n)
       for i, val in enumerate(nums, 1):
          ss[i] = ss[i-1] + val
    
       r = rr = ans = 0
       for l in range(1, n-1):
          r = max(r, l+1)
          while r < n-1 and ss[r]-ss[l] < ss[l]:
             r += 1
          rr = max(rr, r)
          while rr < n-1 and ss[n]-ss[rr+1] >= ss[rr+1]-ss[l]:
             rr += 1
          if ss[l] > ss[r]-ss[l]:
             break
          if ss[r]-ss[l] > ss[n]-ss[r]:
             continue
          ans = (ans+rr-r+1) % m
       return ans
    
    nums = [2,3,3,3,7,1]
    print(solve(nums))

    इनपुट

    [1,7,3,6,5]
    

    आउटपुट

    3

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

      मान लीजिए, हमारे पास पूर्णांक वाले दो सरणियाँ हैं। एक सूची में कुछ इकाई चौड़ाई वाले बक्सों की ऊँचाई होती है और दूसरी सूची में गोदाम में कमरों की ऊँचाई होती है। कमरों की संख्या 0...n है, और कमरों की ऊंचाई सरणी गोदाम में उनके संबंधित सूचकांक में प्रदान की जाती है। हमें पता लगाना है कि कितने बक्सों को

    1. पायथन में एक संदेश को डिकोड करने के कई तरीकों को खोजने के लिए कार्यक्रम

      मान लीजिए कि हमारे पास ए =1, बी =2, ... जेड =26 जैसी मैपिंग है, और हमारे पास एक एन्कोडेड संदेश संदेश स्ट्रिंग है, हमें इसे डिकोड करने के तरीकों की संख्या गिननी होगी। इसलिए, यदि इनपुट संदेश =222 जैसा है, तो आउटपुट 3 होगा, क्योंकि इसे 3 तरीकों से डिकोड किया जा सकता है:बीबीबी, बीवी, और वीबी। इसे हल क

    1. पायथन कार्यक्रम अधिकतम तीन।

      तीन नंबर ए बी और सी को देखते हुए, हमारा काम यह है कि हमें दी गई संख्या में से अधिकतम तत्व को खोजना है। उदाहरण Input: a = 2, b = 4, c = 3 Output: 4 एल्गोरिदम Step 1: input three user input number. Step2: Add three numbers to list. Step 3: Using max() function to find the greatest number max(lst).