কম্পিউটার

পাইথনে সংখ্যার মধ্যে অপারেটর সন্নিবেশ করে সর্বাধিক মান খুঁজে বের করার প্রোগ্রাম


ধরুন আমাদের কাছে সংখ্যা বলা সংখ্যার একটি তালিকা আছে, আমাদেরকে প্রদত্ত সংখ্যার মধ্যে +, −, এবং * এর মতো যেকোনো বাইনারি অপারেটর যোগ করে সর্বাধিক মান খুঁজে বের করতে হবে। যে কোন বৈধ বন্ধনী সন্নিবেশ করান।

সুতরাং, যদি ইনপুটটি nums =[−6, −4, −10] এর মত হয়, তাহলে আউটপুট হবে 100, যেমন আমরা এক্সপ্রেশন তৈরি করতে পারি:((−6) + (−4)) * −10।

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

  • OPS :=অপারেটরদের একটি তালিকা [+, −,]

  • N :=A

    এর আকার
  • যদি A-এর সমস্ত উপাদান 0 হয়, তাহলে

    • রিটার্ন 0

  • একটি ফাংশন dp() সংজ্ঞায়িত করুন। এটি i, j

    লাগবে
  • যদি আমি j এর মত হয়, তাহলে

    • একটি জোড়া ফেরত দিন (A[i], A[i])

  • low :=inf, high :=−inf

  • k এর জন্য i থেকে j − 1, do

    • প্রতিটি বামে dp(i, k), do

      • dp(k + 1, j) প্রতিটি ডানের জন্য, করুন

        • OPS-এ প্রতিটি অপারেটরের জন্য, করুন

          • res :=বাম ও ডান

          • যদি রেস <কম, তাহলে

            • কম :=রেস

          • যদি রেস> উচ্চ হয়, তাহলে

            • উচ্চ :=রেস

  • রিটার্ন পেয়ার (নিম্ন, উচ্চ)

  • প্রধান পদ্ধতি থেকে নিম্নলিখিতগুলি করুন -

  • উত্তর :=dp(0, N − 1)

  • উত্তরের দ্বিতীয় মান ফেরত দিন

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

উদাহরণ

import operator
class Solution:
   def solve(self, A):
      OPS = [operator.add, operator.sub, operator.mul]
      N = len(A)
      if not any(A):
         return 0
      def dp(i, j):
         if i == j:
            return [A[i], A[i]]
         low = float("inf")
         high = float("−inf")
         for k in range(i, j):
            for left in dp(i, k):
               for right in dp(k + 1, j):
                  for op in OPS:
                     res = op(left, right)
                     if res < low:
                        low = res
                     if res > high:
                        high = res
         return [low, high]
      return dp(0, N − 1)[1]
ob = Solution()
nums = [−6, −4, −10]
print(ob.solve(nums))

ইনপুট

[−6, −4, −10]

আউটপুট

100

  1. পাইথনের প্রান্ত থেকে K সংখ্যাগুলি সরিয়ে সর্বাধিক যোগফল খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে সংখ্যাগুলি মুছে দিয়ে সর্বাধিক সংযোজন স্কোর খুঁজে বের করার প্রোগ্রাম

  3. পাইথন প্রোগ্রাম ডিকশনারিতে দ্বিতীয় সর্বোচ্চ মান খুঁজে পেতে

  4. পাইথন প্রোগ্রাম সর্বোচ্চ তিনটি সংখ্যা খুঁজে বের করতে