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

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)
  • दूसरे और तीसरे ढेर से चुनें: वर्तमान स्थिति (0, 2, 2)
  • दूसरे और तीसरे ढेर से चुनें: वर्तमान स्थिति (0, 1, 1)
  • दूसरे और तीसरे ढेर से चुनें: वर्तमान स्थिति (0, 0, 0)
और अंत में दो से कम नॉन-खाली ढेर हैं, इसलिए गेम समाप्त होता है।

समाधान के चरण

  1. minimum := min(a, b, c)
  2. maximum := max(a, b, c)
  3. left := a + b + c - maximum - minimum
  4. यदि maximum - left <= minimum, तो:
    • minimum + left - (1 + minimum - (maximum - left)) // 2 वापस करें
  5. minimum + min(maximum - minimum, left) वापस करें

उदाहरण

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

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. Python में इमारतों की अधिकतम ऊंचाई ज्ञात करें Python में इमारतों की अधिकतम ऊंचाई ज्ञात करें

    n इमारतें एक पंक्ति में (1 से n लेबल)। प्रतिबंध: restrictions[i] = (id, max_height)। नियम: ऊंचाई ≥ 0, पहली इमारत की ऊंचाई = 0, आसन्न इमारतों में ऊंचाई अंतर ≤ 1। अधिकतम संभव ऊंचाई खोजें। एल्गोरिदम: दो पास + शिखर गणना प्रतिबंधों को id द्वारा सॉर्ट करें फॉरवर्ड पास: बाएं से दाएं, प्रत्येक प्रतिबंध को

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

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

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

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