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

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

मान लीजिए हमारे पास तीन मान a, b और c हैं। हम एक सॉलिटेयर गेम खेल रहे हैं जिसमें पत्थरों के तीन ढेर हैं जिनका आकार क्रमशः a, b और c है। प्रत्येक मोड़ पर खिलाड़ी दो अलग-अलग गैर-खाली ढेरों का चयन करता है, प्रत्येक से एक पत्थर लेता है, और अपने स्कोर में 1 अंक जोड़ता है। खेल समाप्त होता है जब दो से कम गैर-रिक्त ढेर होते हैं। इसलिए हमें आपके द्वारा प्राप्त किए जा सकने वाले अधिकतम अंक प्राप्त करने होंगे।

इसलिए, यदि इनपुट a =4, b =4, c =6 जैसा है, तो आउटपुट 7 होगा क्योंकि प्रारंभिक अवस्था (4, 4, 6) है, तो हम इन चरणों का पालन कर सकते हैं -

  • पहले और दूसरे ढेर में से चुनें ताकि वर्तमान स्थिति (3, 3, 6) हो

  • पहली और तीसरी बवासीर में से चुनें ताकि वर्तमान स्थिति (2, 3, 5) हो

  • पहली और तीसरी बवासीर में से चुनें ताकि वर्तमान स्थिति (1, 3, 4) हो

  • पहले और तीसरे ढेर में से चुनें ताकि वर्तमान स्थिति (0, 3, 3)

    . हो
  • 2 और 3 बवासीर में से चुनें ताकि वर्तमान स्थिति (0, 2, 2)

    . हो
  • 2 और 3 बवासीर में से चुनें ताकि वर्तमान स्थिति (0, 1, 1)

    . हो
  • 2 और 3 बवासीर में से चुनें ताकि वर्तमान स्थिति (0, 0, 0) हो

और अंत में दो से कम खाली ढेर हैं, इसलिए खेल समाप्त होता है।

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

  • न्यूनतम:=न्यूनतम a, b और c

  • अधिकतम :=अधिकतम a, b और c

  • बायां :=a + b + c - अधिकतम - न्यूनतम

  • यदि अधिकतम-बाएं <=न्यूनतम, तो

    • वापसी न्यूनतम + बायां - भागफल (1 + न्यूनतम - (अधिकतम-बाएं))/2

  • कम से कम + (न्यूनतम (अधिकतम-न्यूनतम) और बाएं)

उदाहरण

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

def solve(a, b, c):
   minimum = min(a,b,c)
   maximum = max(a,b,c)
   left = a+b+c-maximum-minimum
   if maximum-left<=minimum:
      return minimum + left-(1+minimum-(maximum-left))//2
   return minimum + min(maximum-minimum,left)

a = 4
b = 4
c = 6
print(solve(a, b, c))

इनपुट

4, 4, 6

आउटपुट

7

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

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

  1. पायथन में सभी संभावित वैध पथों से अधिकतम अंक खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास दो सरणियाँ हैं nums1 और nums2। एक वैध पथ निम्नानुसार परिभाषित किया गया है - पार करने के लिए nums1 या nums2 चुनें (इंडेक्स-0 से)। सरणी को बाएँ से दाएँ पार करें। अब, यदि हम nums1 और nums2 में मौजूद किसी भी मान से आगे बढ़ रहे हैं तो हम पथ को अन्य सरणी में बदल सकते हैं। य

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

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