इस समस्या में, हमें एक सरणी arr[] और एक संख्या M दी जाती है। हमारा कार्य C++ में अधिकतम भार अंतर की गणना करने के लिए एक प्रोग्राम बनाना है।
समस्या का विवरण
हम सरणी से एम तत्व इस तरह पाएंगे कि योग और शेष तत्वों के योग के बीच पूर्ण अंतर अधिकतम हो।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट :गिरफ्तारी [] ={3, 1, 6, 9, 4} एम =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. है