কম্পিউটার

ব্যক্তি 1 চেক করার প্রোগ্রাম পাইথনে সর্বাধিক স্কোর নিয়ে ক্যান্ডি গেম জিততে পারে বা না করে


ধরুন দুইজন খেলোয়াড় একটি খেলা খেলছে৷ যেখানে একটি লাইনে বেশ কয়েকটি ক্যান্ডি স্থাপন করা হয়, এবং ব্যক্তি 1-কে সংখ্যার একটি তালিকা দেওয়া হয় যাকে বলা হয় সংখ্যা যা প্রতিটি ক্যান্ডির পয়েন্ট মানকে প্রতিনিধিত্ব করে। প্রতিটি ব্যক্তির পালাক্রমে, তারা লাইনের সামনে থেকে 1, 2, বা 3টি ক্যান্ডি বাছাই করতে পারে, তারপর তাদের তালিকা থেকে মুছে ফেলতে পারে এবং তাদের পয়েন্টের যোগফল তাদের স্কোরে যোগ করতে পারে। সমস্ত ক্যান্ডি মুছে ফেলা হলে এই গেমটি শেষ হবে এবং উচ্চ স্কোর সহ ব্যক্তি বিজয়ী হবে। আমাদের চেক করতে হবে ১ জন এই গেমটি জিততে পারবে কি না।

সুতরাং, যদি ইনপুটটি সংখ্যার মত হয় =[1, 1, 2, 3, 50], তাহলে আউটপুট হবে True, যেহেতু ব্যক্তি 1 1টি ক্যান্ডি নিতে পারে, তাহলে অন্য খেলোয়াড়কে 1, 2 বা 3টি ক্যান্ডি নিতে হবে। যে কোনো ক্ষেত্রে, ব্যক্তি 1 50 মূল্যের সাথে ক্যান্ডি নিতে পারে।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • n :=সংখ্যার আকার

  • টেবিল :=তিনটি 0s সহ একটি অ্যারে।

  • n − 1 থেকে 0 রেঞ্জে i জন্য, 1 দ্বারা হ্রাস করুন, করুন

    • লাভ :=−inf

    • sum_val :=0

    • j-এর জন্য i থেকে ন্যূনতম i + 3 এবং n এর মধ্যে, করুন

      • sum_val :=sum_val + সংখ্যা[j]

      • মুনাফা :=লাভের সর্বোচ্চ এবং (sum_val − table[j − i])

    • সেট টেবিল :=তিনটি মান সহ একটি তালিকা [লাভ, টেবিল[0], টেবিল[1]]

  • সারণী [0]> 0 হলে সত্য ফেরত দিন, অন্যথায় মিথ্যা

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

import math
class Solution:
   def solve(self, nums):
      n = len(nums)
      table = [0, 0, 0]
      for i in range(n − 1, −1, −1):
         profit = −math.inf
         sum_val = 0
         for j in range(i, min(i + 3, n)):
            sum_val += nums[j]
            profit = max(profit, sum_val − table[j − i])
         table[:] = [profit, table[0], table[1]]
      return table[0] > 0
ob = Solution()
nums = [1, 1, 2, 3, 50]
print(ob.solve(nums))

ইনপুট

[1, 1, 2, 3, 50]

আউটপুট

True

  1. ক্যান্ডি রিমুভ গেমে প্রথম খেলোয়াড় পাইথনে জিতবে কিনা তা পরীক্ষা করার জন্য প্রোগ্রাম?

  2. পাইথনের ক্ষমতার মধ্যে বিভিন্ন আইটেম গ্রহণ করে আমরা সর্বাধিক পরিমাণ খুঁজে পেতে প্রোগ্রামটি পেতে পারি

  3. আমরা পাইথনে শব্দের তালিকা দিয়ে লক্ষ্য বানান করতে পারি বা না তা পরীক্ষা করার জন্য প্রোগ্রাম

  4. স্ট্রিং খালি আছে কি না তা পরীক্ষা করার জন্য পাইথন প্রোগ্রাম