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

पायथन में ईंट हटाने के खेल का अधिकतम स्कोर खोजने का कार्यक्रम

मान लीजिए अमल और बिमल एक खेल खेल रहे हैं। उनके पास एक सरणी संख्या है जो n ईंटों को इसके शीर्ष पर क्रमांकित के साथ निर्धारित करती है। इस खेल में, खिलाड़ी वैकल्पिक रूप से ऊपर से एक, दो या तीन ईंटों को हटा सकते हैं, और हटाए गए ईंटों पर अंकित अंक उस खिलाड़ी के स्कोर में जोड़ दिए जाते हैं। अगर अमल हमेशा पहले शुरू करता है, तो हमें यह पता लगाना होगा कि अमल अधिकतम कितना स्कोर सुरक्षित करता है।

इसलिए, यदि इनपुट संख्या =[1,2,3,4,5] की तरह है, तो आउटपुट 6 होगा, क्योंकि अमल ईंट {1}, {1,2} या {1,2,3} को हटा सकता है। , यदि अमल पहले दो या तीन तत्वों का चयन करता है, तो बिमल सभी ले सकता है और अधिकतम अंक प्राप्त कर सकता है, लेकिन यदि अमल पहले 1 का चयन करता है, तो बिमल अधिकतम {2,3,4} =9 ले सकता है और अमल 5 ले सकता है, इसलिए कुल अमल का स्कोर 1+5 =6 है।

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

  • आईएनएफ:=9999
  • n :=अंकों का आकार
  • सूची संख्या उलट दें
  • अस्थायी:=आकार n की एक सरणी और 0 से भरें
  • कुल:=आकार n की एक सरणी और 0 से भरें
  • प्रत्येक अनुक्रमणिका i के लिए, और अंकों में मान मान, करें
    • कुल[i] :=कुल[i-1] + वैल
  • अस्थायी[0] :=अंक[0]
  • अस्थायी[1]:=अस्थायी[0]+संख्या[1]
  • अस्थायी[2] :=अस्थायी[1]+संख्या[2]
  • मैं के लिए 3 से n -1 की सीमा में, करो
    • a :=nums[i]
    • b :=nums[i] + nums[i-1]
    • c :=nums[i] + nums[i-1] + nums[i-2]
    • temp[i] :=अधिकतम a, b, c
  • वापसी अस्थायी[n-1]

उदाहरण

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

INF = 99999
def solve(nums):
   n = len(nums)
   nums.reverse()
   temp = [0]*n
   total = [0]*n
   for i, val in enumerate(nums):
      total[i] = total[i-1] + val
   temp[0] = nums[0]
   temp[1] = temp[0]+nums[1]
   temp[2] = temp[1]+nums[2]
   for i in range(3, n):
      a = nums[i]
      b = nums[i] + nums[i-1]
      c = nums[i] + nums[i-1] + nums[i-2]
      temp[i] = max(a, b, c)
   return temp[n-1]

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

इनपुट

[1,2,3,4,5]

आउटपुट

6

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

    मान लीजिए कि हमारे पास एक संख्या n है। हमें निम्नलिखित तरीके से n + 1 लंबाई की एक सरणी A उत्पन्न करनी है - ए[0] =0 ए[1] =1 ए [2 * आई] =ए [i] अगर 2 <=2 * मैं <=n ए [2 * आई + 1] =ए [i] + ए [i + 1] अगर 2 <=2 * i + 1 <=n अंत में हमें सरणी अंकों में अधिकतम संख्या ज्ञात करनी होगी। इसलिए, य

  1. पायथन में संख्याओं को हटाकर अधिकतम योगात्मक अंक प्राप्त करने का कार्यक्रम

    मान लीजिए हमारे पास संख्याओं की एक सूची है जिसे अंक कहा जाता है। आइए एक ऑपरेशन पर विचार करें जहां हम एक संख्या का चयन कर सकते हैं, फिर उसे हटा सकते हैं और संख्या और उसके दो आसन्न संख्याओं के योग से अपना स्कोर बढ़ा सकते हैं। यदि हम इस ऑपरेशन को जितनी बार चाहें उतनी बार कर सकते हैं, जब तक कि हम सूची म

  1. पायथन में सन्निहित उपसरणी का अधिकतम उत्पाद खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास अंक नामक एक सरणी है, हमें एक सरणी के भीतर एक सन्निहित उपसरणी के तत्वों का उत्पाद खोजना होगा (जिसमें कम से कम एक संख्या हो) जिसमें सबसे बड़ा उत्पाद हो। तो अगर सरणी [1,9,2,0,2,5] है, तो आउटपुट 18 होगा, क्योंकि सन्निहित उपसरणी [1,9,2] में अधिकतम उत्पाद है। इसे हल करने के लिए, हम