আমাদের একটি অ্যারে দেওয়া আছে যা সর্টেড নাও হতে পারে। টাস্ক হলো সেটিকে সর্টেড ফর্মে আনতে এবং তারপর আজ করা (adjacent) এলিমেন্টগুলোর মধ্যে সর্বোচ্চ পার্থক্য বের করা।
ইনপুট − Arr[] = [1, 5, 10, 2, 7]
আউটপুট − Maximum adjacent difference in array in its sorted form is 3.
ব্যাখ্যা − ইনক্রিজিং অর্ডারে সর্ট করলে: [1, 2, 5, 7, 10]। আজ করা পার্থক্যগুলো:
Arr[1]-Arr[0]=1, Max=1 Arr[2]-Arr[1]=3, Max=3 Arr[3]-Arr[2]=2, Max=3 Arr[4]-Arr[3]=3, Max=3
ইনপুট − Arr[] = [5, 11, 21, 15, 20]
আউটপুট − Maximum adjacent difference in array in its sorted form is 6.
ব্যাখ্যা − সর্টেড: [5, 11, 15, 20, 21]। পার্থক্যগুলো: ৬, ৪, ৫, ১ — সর্বোচ্চ ৬।
প্রোগ্রামে ব্যবহৃত পদ্ধতি
- ইন্টিজার অ্যারে
Arr[]ইনপুট নিন। - অ্যারেটি ইনক্রিজিং অর্ডারে সর্ট করুন (সর্টিং অর্ডার মেইন ফ্যাক্টর নয়)।
MaxDভ্যারিয়েবল দিয়ে সর্বোচ্চ পার্থক্য সংরক্ষণ করুন, ইনিশিয়াল ভ্যালুArr[1]-Arr[0]।- দ্বিতীয় এলিমেন্ট থেকে লাস্ট এলিমেন্ট পর্যন্ত লুপ চালান।
- প্রতিটি ইটারেশনে
Arr[i+1] - Arr[i]ক্যালকুলেট করুন এবংMaxD-এর সাথে তুলনা করুন। বড় হলে আপডেট করুন। - সেকেন্ড লাস্ট এলিমেন্ট পর্যন্ত চালিয়ে যান।
MaxDপ্রিন্ট করুন।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int max_adj_Diff(int A[], int size) {
int MaxD = A[1] - A[0];
for (int i = 1; i < size - 1; i++) {
if (A[i+1] - A[i] > MaxD)
MaxD = A[i+1] - A[i];
}
return MaxD;
}
int main() {
int Arr[] = {1, 5, 2, 18, 20, 13};
sort(Arr, Arr + 6); // ইনক্রিজিং অর্ডারে সর্ট
int md = max_adj_Diff(Arr, 6);
cout << "Maximum adjacent difference in array in its sorted form: " << md;
return 0;
}
আউটপুট
Maximum adjacent difference in array in its sorted form: 8