मान लीजिए कि 3*n सिक्कों के ढेर मौजूद हैं, और वे अलग-अलग आकार के हैं, तीन खिलाड़ी जैसे खेल खेल रहे हैं -
-
प्रत्येक चरण में, खिलाड़ी1 सिक्कों के किसी भी 3 ढेर का चयन करेगा।
-
अपनी पसंद में से, प्लेयर2 सिक्कों की अधिकतम संख्या के साथ ढेर को चुनेगा।
-
प्लेयर1 अगले ढेर को अधिकतम सिक्कों के साथ चुनेगा।
-
प्लेयर3 आखिरी ढेर को चुनेगा।
-
इन चरणों को तब तक दोहराएं जब तक कि सिक्कों का ढेर न रह जाए।
अब यदि हमारे पास पाइल्स नामक पूर्णांकों की एक सरणी है, जहां पाइल्स [i] ith पाइल में सिक्कों की संख्या है, तो हमें प्लेयर1 के अधिकतम सिक्कों की संख्या ज्ञात करनी होगी।
इसलिए, यदि इनपुट पाइल्स की तरह है =[2,4,1,2,7,8], तो आउटपुट 9 होगा क्योंकि पहले हम एक ट्रिपलेट (2,7,8) का चयन कर सकते हैं, फिर प्लेयर2 8 का चयन करता है, प्लेयर 1 7 का चयन करता है और 2 प्लेयर 3 के लिए है। फिर फिर से ट्रिपलेट (1,2,4) का चयन करें, फिर प्लेयर 2 सिक्का 4 के साथ ढेर का चयन करता है, फिर प्लेयर 1 प्लेयर 3 के लिए 2 और शेष 1 का चयन करता है। वर्तमान में प्लेयर1 में 7+2 =9 सिक्के हैं, यह अधिकतम है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
सूची ढेर को क्रमबद्ध करें
-
उत्तर :=0
-
जबकि बवासीर का आकार 0 के समान नहीं है, करें
-
उत्तर :=उत्तर + पाइल्स से दूसरा अंतिम तत्व
-
पाइल्स से दूसरा अंतिम तत्व हटाएं
-
पाइल्स से अंतिम तत्व हटाएं
-
पाइल्स से पहला एलिमेंट डिलीट करें
-
-
वापसी उत्तर
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
def solve(piles): piles.sort() ans = 0 while(len(piles)!=0): ans = ans + piles[-2] del piles[-2] del piles[-1] del piles[0] return ans piles = [2,4,1,2,7,8] print(solve(piles))
इनपुट
[2,4,1,2,7,8]
आउटपुट
9