একটি সংখ্যার অ্যারে Arr[] দেওয়া আছে। লক্ষ্য হল সর্বোচ্চ পার্থক্য বালা সব পেয়ারের মধ্যে যেসব পেয়ারের পার্থক্য সেই সর্বোচ্চ পার্থক্যের সমান, তাদের সংখ্যা গণনা করা। পেয়ার (i!=j) এবং arr[x]-arr[y] সর্বোচ্চ সম্ভব।
প্রথমে সর্বোচ্চ পার্থক্য (i!=j) বের করে maxdiff-এ রাখা হয়। তারপর সেই পার্থক্য বালা সব পেয়ার গণনা করা হয়।
উদাহরণ
ইনপুট: arr[] = { 1,2,3,2,4,1,5 }
আউটপুট: সর্বোচ্চ পার্থক্য বালা পেয়ার বেছে নেওয়ার উপায়: ২
ব্যাখ্যা: ন্যূনতম ১, সর্বোচ্চ ৫, সর্বোচ্চ পার্থক্য = ৫-১=৪। পেয়ার: (1,5) এবং (1,5) - দুটি উপায়।
ইনপুট: arr[] = { 2,4,2,4 }
আউটপুট: সর্বোচ্চ পার্থক্য বালা পেয়ার বেছে নেওয়ার উপায়: ৪
ব্যাখ্যা: ন্যূনতম ২, সর্বোচ্চ ৪, সর্বোচ্চ পার্থক্য = ২। পেয়ার: (2,4), (2,4), (4,2), (2,4) - চারটি উপায়।
অ্যাপ্রোচ
- ইন্টিজার অ্যারে Arr[] নেওয়া হয়।
- N ভেরিয়েবলে দৈর্ঘ্য।
countWays(int arr[], int n)ফাংশন অ্যারে এবং দৈর্ঘ্য গ্রহণ করে সর্বোচ্চ পার্থক্য বালা পেয়ার বেছে নেওয়ার উপায় রিটার্ন করে।- প্রাথমিক count ০, diff, maxdiff=0, mini, maxx।
- mini=maxx=arr[0]। for লুপে ন্যূনতম এবং সর্বোচ্চ মান বের করা হয়। maxdiff = maxx - mini।
- দুটি নেস্টেড for লুপে সব পেয়ার চেক করা হয়। diff = arr[i]-arr[j] এবং arr[j]-arr[i] আলাদা পেয়ার হিসেবে গণনা। diff == maxdiff হলে count বাড়ানো হয়।
উদাহরণ কোড
#include <bits/stdc++.h>
using namespace std;
int countWays(int arr[], int n) {
int count = 0;
int diff, maxdiff = 0;
int mini, maxx;
mini = maxx = arr[0];
for (int i = 0; i < n; i++) {
if (arr[i] < mini) mini = arr[i];
if (arr[i] > maxx) maxx = arr[i];
}
maxdiff = maxx - mini;
for (int i = 0; i < n-1; i++) {
for (int j = i+1; j < n; j++) {
diff = arr[i] - arr[j];
if (diff == maxdiff) count++;
diff = arr[j] - arr[i];
if (diff == maxdiff) count++;
}
}
return count;
}
int main() {
int Arr[] = { 3, 2, 1, 1, 3 };
int N = 5;
cout << endl << "No. of ways of choosing pair with maximum difference : " << countWays(Arr, N);
return 0;
}
আউটপুট
No. of ways of choosing pair with maximum difference : 4