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

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


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

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

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

  • INF := 9999
  • n := nums का आकार
  • सूची nums को उल्टा करें
  • temp := आकार n की एक सरणी जिसे 0 से भरा गया है
  • total := आकार n की एक सरणी जिसे 0 से भरा गया है
  • प्रत्येक इंडेक्स i, और मान val के लिए nums में, करें
    • total[i] := total[i-1] + val
  • temp[0] := nums[0]
  • temp[1] := temp[0]+nums[1]
  • temp[2] := temp[1]+nums[2]
  • i को 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 का अधिकतम
  • temp[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. - Python में जनरेटेड सरणी में अधिकतम मान खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक संख्या n है। हमें निम्न तरीके से n + 1 लंबाई की एक सरणी A जनरेट करनी है: A[0] = 0 A[1] = 1 A[2 * i] = A[i] यदि 2 <= 2 * i <= n A[2 * i + 1] = A[i] + A[i + 1] यदि 2 <= 2 * i + 1 <= n अंत में हमें सरणी nums में अधिकतम संख्या ढूंढनी है। इसलिए, यदि इनपुट है: n = 5, तो आउटपुट

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

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

  1. - पायथन में सन्निकट सबएरे के अधिकतम गुणनफल को खोजने का प्रोग्राम

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