একটি পূর্ণসংখ্যার অ্যারে দেওয়া আছে। প্রতিটি ইন্ডেক্স জোড়া (i, j) এর জন্য |Arr[i] - Arr[j]| + |i - j| এর সর্বোচ্চ মান খুঁজে বের করতে হবে। এখানে |A| মানে A-এর निरপেক্ষ মান।
উদাহরণ
ইনপুট: Arr[] = { 1, 2, 4, 5 }
আউটপুট: মান এবং ইনডেক্স যোগফলের সর্বোচ্চ निरপেক্ষ পার্থক্য - 7
ব্যাখ্যা: সব সম্ভাব্য ইন্ডেক্স জোড়ার মান নিচে দেওয়া হলো:
(0,0), (1,1), (2,2), (3,3) → |i-j| = 0 (0,1) → |1-2| + |0-1| = 1+1 = 2 (0,2) → |1-4| + |0-2| = 3+2 = 5 (0,3) → |1-5| + |0-3| = 4+3 = 7 (1,2) → |2-4| + |1-2| = 2+1 = 3 (1,3) → |2-5| + |1-3| = 3+2 = 5 (2,3) → |4-5| + |2-3| = 1+1 = 2 সর্বোচ্চ মান = 7
ইনপুট: Arr[] = { 10, 20, 21 }
আউটপুট: 13
প্রোগ্রামে ব্যবহৃত পদ্ধতি
- একটি পূর্ণসংখ্যার অ্যারে Arr[] নেওয়া হয়েছে।
- maxabsDiff(int arr[], int n) ফাংশনটি সর্বোচ্চ निरপেক্ষ পার্থক্য গণনা করে।
- result ভেরিয়েবল 0 দিয়ে ইনিশিয়ালাইজ করা হয়।
- দুটি নেস্টেড ফর লুপ দিয়ে সব জোড়া (i, j) ট্রাভার্স করা হয়।
- প্রতিটি জোড়ার জন্য abs(arr[i] - arr[j]) + abs(i - j) হিসাব করা হয়।
- যদি নতুন মান result-এय़ बड़ा হয়, তবে result আপডেট করা হয়।
- পুরো অ্যারে ট্রাভার্স করার পর result রিটার্ন করা হয়।
C প্রোগ্রাম উদাহরণ
#include <stdio.h>
#include <math.h>
int maxabsDiff(int arr[], int n) {
int result = 0;
for (int i = 0; i < n; i++) {
for (int j = i; j < n; j++) {
int absDiff = abs(arr[i] - arr[j]) + abs(i - j);
if (absDiff > result)
result = absDiff;
}
}
return result;
}
int main() {
int Arr[] = {1, 2, 4, 1, 3, 4, 2, 5, 6, 5};
printf("মান এবং ইনডেক্স যোগফলের সর্বোচ্চ निरপেক্ষ পার্থক্য: %d", maxabsDiff(Arr, 10));
return 0;
}
আউটপুট
মান এবং ইনডেক্স যোগফলের সর্বোচ্চ निरপেক্ষ পার্থক্য: 13