कार्य सरणी में m तत्वों के योग का सबसे बड़ा अंतर ढूंढना है। मान लीजिए हमारे पास एक सरणी और एक संख्या m है, तो हम पहले सबसे बड़े m संख्याओं का योग ढूंढेंगे और फिर उससे सबसे छोटे m संख्याओं का योग घटाएंगे ताकि अधिकतम अंतर प्राप्त हो सके। इसलिए मुख्य बात m संख्याओं के दो उपसमुच्चय ढूंढना है जिनका योग सबसे अधिक और सबसे कम हो।
आइए अब एक उदाहरण का उपयोग करके समझते हैं कि हमें क्या करना है:
इनपुट
arr = {1, 2, 3, 4, 5} ; m = 3 आउटपुट
यहां अधिकतम अंतर है: 6
व्याख्या
यहां सबसे बड़ी 3 संख्याएं 3, 4, 5 हैं और योग 12 है। सबसे छोटी 3 संख्याएं 1, 2, 3 हैं और योग 6 है। इसलिए उच्चतम या अधिकतम अंतर 12 - 6 है जो 6 है।
इनपुट
arr = {10, 13, 22, 8, 16, 14}; m = 4 आउटपुट
यहां अधिकतम अंतर है: 20
व्याख्या
यहां सबसे बड़ी 4 संख्याएं 22, 16, 14, 13 हैं और योग 65 है। सबसे छोटी 4 संख्याएं 8, 10, 13, 14 हैं और योग 45 है। इसलिए उच्चतम या अधिकतम अंतर 65 - 45 है जो 20 है।
उपयोग किया गया दृष्टिकोण
इनपुट सरणी arr[] और समूह बनाने के लिए एक संख्या m लें।
find_diff() फ़ंक्शन में हम इनपुट सरणी और इसकी लंबाई पास कर रहे हैं और m तत्वों के समूहों के योग का अधिकतम अंतर लौटा रहे हैं।
यहां हम पहले सरणी arr[] के तत्वों को सॉर्ट करेंगे।
फिर हम पहले m और अंतिम m तत्वों का योग ढूंढेंगे क्योंकि ये arr[] के सबसे छोटे m और सबसे बड़े m संख्याएं होंगी।
अंत में हम अंतर लौटाते हैं।
नोट - sort(arr[], int) को सॉर्ट की गई सरणी लौटाने के लिए माना जाता है।
उदाहरण
#include <stdio.h> // सरणी के सबसे बड़े और सबसे छोटे m तत्वों के योग के बीच अधिकतम अंतर की गणना के लिए फ़ंक्शन बनाएं int find_diff(int arr[], int length, int m){ // सरणी को सॉर्ट करने के लिए sort(arr, length); int maxsum = 0, minsum = 0; // अब m तत्वों के दो उपसमुच्चयों के बीच अधिकतम अंतर की गणना करें for(int i = 0; i < m; i++){ minsum += arr[i]; maxsum += arr[length - i - 1]; } return (maxsum - minsum); } // ड्राइवर प्रोग्राम int main(){ int arr[] = {1, 1, 2, 3, 5, 7, 1}; int m = 3; cout << find_diff(arr, 7, m); return 0; } आउटपुट
उपरोक्त कोड चलाने पर हमें निम्नलिखित आउटपुट मिलेगा:
12