এই সমস্যায়, আমাদেরকে একটি অ্যারে arr[] এবং একটি সংখ্যা M দেওয়া হয়। আমাদের কাজ হল C++ এ সর্বাধিক ওজনের পার্থক্য গণনা করার জন্য একটি প্রোগ্রাম তৈরি করা।
সমস্যা বিবৃতি
আমরা অ্যারে থেকে M উপাদানগুলি খুঁজে পাব যাতে যোগফল এবং বাকি উপাদানগুলির যোগফলের মধ্যে পরম পার্থক্য সর্বাধিক।
সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,
ইনপুট :arr[] ={3, 1, 6, 9, 4} M =3
আউটপুট :15
ব্যাখ্যা
আমরা 4,6,9 বিবেচনা করব। যোগফল হল 19। বাকি সংখ্যার যোগফলের সাথে পরম পার্থক্য হল
|19 - 4| =15
সমাধান পদ্ধতি
সমস্যার সমাধান এই সত্যের উপর ভিত্তি করে যে সর্বাধিক পার্থক্য শুধুমাত্র M বৃহত্তম সংখ্যা বা M ক্ষুদ্রতম সংখ্যার ক্ষেত্রে সম্ভব। এবং আমাদের উভয় শর্ত পরীক্ষা করতে হবে এবং চূড়ান্ত ফলাফল খুঁজে পেতে পরম পার্থক্য তুলনা করতে হবে। M বৃহত্তম/ছোট সংখ্যা খুঁজে বের করার প্রক্রিয়া সহজ করার জন্য, আমরা অ্যারে সাজাব এবং তারপর K বৃহত্তম এবং ক্ষুদ্রতম সংখ্যার গণনা করব।
উদাহরণ
#include <bits/stdc++.h> using namespace std; int maxWeightDifference(int arr[], int N, int M){ int maxabsDiff = -1000; sort(arr, arr + N); int sumMin = 0, sumMax = 0, arrSum = 0; for(int i = 0; i < N; i++){ arrSum += arr[i]; if(i < M) sumMin += arr[i]; if(i >= (N-M)) sumMax += arr[i]; } maxabsDiff = max(abs(sumMax - (arrSum - sumMax)), abs(sumMin -(arrSum - sumMin))); return maxabsDiff; } int main(){ int arr[] = {3, 1, 6, 9, 4} ; int M = 3; int N = sizeof(arr)/sizeof(arr[0]); cout<<"The maximum weight difference is "<<maxWeightDifference(arr,N, M); return 0; }
আউটপুট
The maximum weight difference is 15