একটি সংখ্যার তালিকা nums দেওয়া আছে। +, -, * অপারেটর এবং বন্ধনী ব্যবহার করে সর্বোচ্চ মান বের করতে হবে।
উদাহরণ: nums = [-6, -4, -10] হলে আউটপুট ১০০, কারণ ((-6)+(-4)) * (-10) = ১০০।
সমাধানের ধাপসমূহ
- OPS := [+, -, *] অপারেটর তালিকা
- dp(i, j) ফাংশন দিয়ে সাবঅ্যারে i..j এর ন্যূনতম ও সর্বোচ্চ মান বের করুন
- প্রতিটি পার্টিশন k এবং অপারেটর দিয়ে ফলাফল গণনা করুন
- 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