ধরুন আমাদের কাছে সংখ্যার একটি তালিকা আছে যাকে বলা হয় সংখ্যা এবং আমরা তালিকার যেকোনো সাবলিস্টকে একবারে উল্টাতে পারি। এই ক্রিয়াকলাপটি সম্পাদন করার পরে, আমাদের
-এর সর্বাধিক সম্ভাব্য মান খুঁজে বের করতে হবে$\displaystyle\sum\limits_{i=0}^{n-2}| সংখ্যা[i+1]-[সংখ্যা[i]|$
সুতরাং, ইনপুট যদি nums =[2, 4, 6] এর মত হয়, তাহলে আউটপুট হবে 6, যেমন আমরা যখন [4, 6] বিপরীত করব তখন আমরা [2, 6, 4] হিসাবে তালিকা পাব এবং মান | 2 − 6| + |6 − 4| =6
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
যদি সংখ্যার আকার <=1 হয়, তাহলে −
-
রিটার্ন 0
-
-
উত্তর :=0
-
n :=সংখ্যার আকার
-
আরম্ভ করার জন্য i :=1, যখন i
-
ans :=ans + |সংখ্যা[i] − nums[i − 1]|
-
-
orig :=ans
-
আরম্ভ করার জন্য i :=1, যখন i
করুন -
ans :=সর্বাধিক উত্তর এবং মূল − |(nums[i] − nums[i + 1]| + |nums[0] − nums[i + 1]|
-
ans :=সর্বাধিক উত্তর এবং মূল − |(nums[i] − nums[i − 1]| + |nums[n − 1] − nums[i − 1]|
-
-
pp :=−|সংখ্যা[1] − সংখ্যা[0]|
-
pm :=−|nums[1] − nums[0]|
-
mp :=−|সংখ্যা[1] − সংখ্যা[0]|
-
মিমি :=−|সংখ্যা[1] − সংখ্যা[0]|
-
j শুরু করার জন্য :=2, যখন j
করুন -
jerror :=|সংখ্যা[j + 1] − সংখ্যা[j]|
-
ans :=সর্বাধিক উত্তর এবং (orig + pp − jerror − nums[j] − nums[j + 1])
-
উত্তর :=সর্বাধিক উত্তর এবং (orig + pm − jerror − nums[j] + nums[j + 1])
-
উত্তর :=সর্বাধিক উত্তর এবং (orig + mp − jerror + nums[j] − nums[j + 1])
-
ans :=সর্বাধিক উত্তর এবং (orig + mm − jerror + nums[j] + nums[j + 1])
-
pp :=সর্বাধিক পিপি এবং −|সংখ্যা[j] − সংখ্যা[j − 1]|
-
pm :=সর্বাধিক pm এবং −|nums[j] − nums[j − 1]|
-
mp :=mp এর সর্বাধিক এবং −|nums[j] − nums[j − 1]|
-
মিমি :=সর্বাধিক মিমি এবং −|সংখ্যা[j] − সংখ্যা[j − 1]|
-
-
উত্তর ফেরত দিন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
#include <bits/stdc++.h> using namespace std; int solve(vector<int>& nums) { if (nums.size() <= 1) return 0; int ans = 0; int n = nums.size(); for (int i = 1; i < n; i++) { ans += abs(nums[i] − nums[i − 1]); } int orig = ans; for (int i = 1; i < n − 1; i++) { ans = max(ans, orig − abs(nums[i] − nums[i + 1]) + abs(nums[0] − nums[i + 1])); ans = max(ans, orig − abs(nums[i] − nums[i − 1]) + abs(nums[n − 1] − nums[i − 1])); } int pp = −abs(nums[1] − nums[0]) + nums[0] + nums[1]; int pm = −abs(nums[1] − nums[0]) + nums[0] − nums[1]; int mp = −abs(nums[1] − nums[0]) − nums[0] + nums[1]; int mm = −abs(nums[1] − nums[0]) − nums[0] − nums[1]; for (int j = 2; j < n − 1; j++) { int jerror = abs(nums[j + 1] − nums[j]); ans = max(ans, orig + pp − jerror − nums[j] − nums[j + 1]); ans = max(ans, orig + pm − jerror − nums[j] + nums[j + 1]); ans = max(ans, orig + mp − jerror + nums[j] − nums[j + 1]); ans = max(ans, orig + mm − jerror + nums[j] + nums[j + 1]); pp = max(pp, −abs(nums[j] − nums[j − 1]) + nums[j − 1] + nums[j]); pm = max(pm, −abs(nums[j] − nums[j − 1]) + nums[j − 1] − nums[j]); mp = max(mp, −abs(nums[j] − nums[j − 1]) − nums[j − 1] + nums[j]); mm = max(mm, −abs(nums[j] − nums[j − 1]) − nums[j − 1] − nums[j]); } return ans; } int main(){ vector<int> v = {2, 4, 6}; cout << solve(v); }
ইনপুট
{2, 4, 6}
আউটপুট
6