हमें पूर्णांकों की एक सरणी दी गई है। कार्य मूल्य और सूचकांक राशियों के अधिकतम निरपेक्ष अंतर की गणना करना है। यह एक सरणी में अनुक्रमित (i,j) की प्रत्येक जोड़ी के लिए है, हमें गणना करनी होगी | एआर [i] - ए [जे] | + |आई-जे| और ऐसी अधिकतम संभव राशि ज्ञात कीजिए। यहाँ |ए| मतलब ए का निरपेक्ष मान। यदि सरणी में 4 तत्व हैं तो सूचकांक 0,1,2,3 हैं और अद्वितीय जोड़े होंगे ( (0,0), (1,1), (2,2), (3,3) , (0,1), (0,2), (0,3), (1,2), (1,3), (2,3))।
इनपुट - अरे [] ={ 1,2,4,5 }
आउटपुट − मूल्य और सूचकांक योगों का अधिकतम पूर्ण अंतर − 7
स्पष्टीकरण - सूचकांक जोड़े और | ए [i]-ए [जे] | + | आई-जे | इस प्रकार हैं
1. (0,0), (1,1), (2,2), (3,3)--------- |i-j| for each is 0. 2. (0,1)---------- |1-2| + |0-1|= 1+1 = 2 3. (0,2)---------- |1-4| + |0-2|= 3+2 = 5 4. (0,3)---------- |1-5| + |0-3|= 4+3 = 7 5. (1,2)---------- |2-4| + |1-2|= 2+1 = 3 6. (1,3)---------- |2-5| + |1-3|= 3+2 = 5 7. (2,3)---------- |4-5| + |2-3|= 1+1 = 2 Maximum value of such a sum is 7.
इनपुट - अरे [] ={ 10,20,21 }
आउटपुट − मूल्य और सूचकांक राशियों का अधिकतम निरपेक्ष अंतर − 13
स्पष्टीकरण - सूचकांक जोड़े और | ए [i]-ए [जे] | + | आई-जे | इस प्रकार हैं
1. (0,0), (1,1), (2,2)--------- |i-j| for each is 0. 2. (0,1)---------- |10-20| + |0-1|= 10+1 = 11 3. (0,2)---------- |10-21| + |0-2|= 11+2 = 13 4. (1,2)---------- |20-21| + |1-2|= 1+1 = 2 Maximum value of such a sum is 13.
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
-
हम एक पूर्णांक सरणी लेते हैं जिसमें संख्याएं Arr[]
. के रूप में होती हैं -
फ़ंक्शन maxabsDiff(int arr[],int n) का उपयोग मूल्य और अनुक्रमणिका राशियों के अधिकतम निरपेक्ष अंतर की गणना के लिए किया जाता है..
-
हम वेरिएबल रिजल्ट को -1 से इनिशियलाइज़ करते हैं।
-
लूप के अंदर शुरुआत से ही पूर्णांकों की सरणी को पार करें।
-
लूप के लिए नेस्टेड में शेष तत्वों को पार करें और तत्व मान और अनुक्रमणिका के पूर्ण योग की गणना करें i,j (abs(arr[i] - arr[j]) + abs(i - j)) और एक चर में स्टोर करें जैसे absDiff।
-
यदि यह नई गणना की गई राशि पिछले एक से अधिक है तो इसे 'परिणाम' में संग्रहीत करें।
-
संपूर्ण सरणी को पार करने के बाद परिणाम लौटाएं।
उदाहरण
#include <stdio.h> #include <math.h> // Function to return maximum absolute difference int maxabsDiff(int arr[], int n){ int result = 0; for (int i = 0; i < n; i++) { for (int j = i; j < n; j++) { int absDiff= abs(arr[i] - arr[j]) + abs(i - j); if (absDiff > result) result = absDiff; } } return result; } int main(){ int Arr[] = {1,2,4,1,3,4,2,5,6,5}; printf("Maximum absolute difference of value and index sums: %d", maxabsDiff(Arr,10)); return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
Maximum absolute difference of value and index sums: 13