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

पायथन में स्टोन गेम स्कोर का न्यूनतम अंतर खोजने का कार्यक्रम

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

इसलिए, यदि इनपुट पत्थरों की तरह है =[6,4,2,5,3], तो आउटपुट 6 होगा क्योंकि अमल 3 ले सकता है, इसलिए उसका स्कोर 6+4+2+5 =17 होगा, बिमल का स्कोर 0 अब तक, और सरणी [6,4,2,5] की तरह है, तो बिमल 6 लेता है इसलिए उसका स्कोर 4+2+5 =11 है, अब सरणी [4,2,5] है। फिर अमल 4 को हटाता है, इसलिए उसका स्कोर 17+2+5 =24, स्टोन ऐरे [2,5] बॉब 2 को हटाता है, इसलिए उसका स्कोर 11+5 =16, वर्तमान स्टोन ऐरे [5] और अमल 5 के मान के साथ अंतिम स्टोन को हटाता है। और 0 अंक प्राप्त किया, इसलिए उसका अंतिम स्कोर 24 + 0 =24 है। तो उनके स्कोर का अंतर 24-16 =8 है।

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

  • n :=पत्थरों का आकार
  • dp :=आकार n की एक सरणी और 0 से भरें
  • मैं के लिए n - 1 से 0 की श्रेणी में, 1 से घटाएं
    • v :=पत्थर[i]
    • run_sum :=0
    • j के लिए i + 1 से n-1 की श्रेणी में, करें
      • new_run :=run_sum+stones[j]
      • dp[j] :=(अधिकतम new_run - dp[j]) और (run_sum+v - dp[j - 1])
      • run_sum :=new_run
  • रिटर्न डीपी[एन -1]

उदाहरण

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

def solve(stones):
   n = len(stones)
   dp = [0] * n

   for i in range(n - 1, -1, -1):
      v = stones[i]
      run_sum = 0

      for j in range(i + 1, n):
         new_run = run_sum+stones[j]
         dp[j] = max(new_run - dp[j], run_sum+v - dp[j - 1])
         run_sum = new_run
   return dp[n - 1]

stones = [6,4,2,5,3]
print(solve(stones))

इनपुट

[6,4,2,5,3]

आउटपुट

8

  1. पायथन में एक छड़ी काटने के लिए न्यूनतम लागत खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक मान n और एक सरणी है जिसे कट कहा जाता है। मान लीजिए कि लंबाई n इकाइयों की लकड़ी की छड़ी है। छड़ी को 0 से n तक लेबल किया गया है। यहां कटौती [i] उस स्थिति का प्रतिनिधित्व करती है जहां हम कटौती कर सकते हैं। हमें कटौती क्रम में करनी चाहिए, लेकिन हम कटौती के क्रम को अपनी इच्छानुस

  1. पायथन में आसन्न तत्वों के सूचकांकों के न्यूनतम संभव अंतर को खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास संख्याओं की एक सूची है, हम कह सकते हैं कि दो संख्याएँ nums[i] nums[j] आसन्न हैं, जब अंकों में (nums[i], nums[j]) के बीच कोई संख्या नहीं है। हमें न्यूनतम संभव खोजना है |j - i| जैसे कि nums[j] और nums[i] आसन्न हैं। इसलिए, यदि इनपुट संख्या =[1, -9, 6, -6, 2] की तरह है, तो आउटपुट

  1. पायथन में दो सूचियों से दो तत्वों के बीच न्यूनतम अंतर खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास दो सूचियाँ L1 और L2 हैं, हमें L1 से किसी संख्या और L2 की संख्या के बीच सबसे छोटा अंतर ज्ञात करना है। इसलिए, यदि इनपुट L1 =[2, 7, 4], L2 =[16, 10, 11] जैसा है, तो आउटपुट 3 होगा, क्योंकि सबसे छोटा अंतर 10 - 7 =3 है। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - सूची L1 को