हमें पूर्णांकों की एक सरणी दी गई है। कार्य है मान और सूचकांक योगों का अधिकतम निरपेक्ष अंतर निकालना। अर्थात सरणी में प्रत्येक सूचकांक युग्म (i, j) के लिए, हमें |Arr[i] - Arr[j]| + |i - j| की गणना करनी है और अधिकतम ऐसा योग ढूंढना है। यहां |A| का अर्थ A का निरपेक्ष मान है। यदि सरणी में 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) )।
इनपुट
Arr[] = { 1, 2, 4, 5 } आउटपुट
मान और सूचकांक योगों का अधिकतम निरपेक्ष अंतर: 7
व्याख्या
सूचकांक युग्म और |A[i] - A[j]| + |i - j| निम्नानुसार हैं:
1. (0,0), (1,1), (2,2), (3,3) --------- प्रत्येक के लिए |i-j| 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 ऐसे योग का अधिकतम मान 7 है।
इनपुट
Arr[] = { 10, 20, 21 } आउटपुट
मान और सूचकांक योगों का अधिकतम निरपेक्ष अंतर: 13
व्याख्या
सूचकांक युग्म और |A[i] - A[j]| + |i - j| निम्नानुसार हैं:
1. (0,0), (1,1), (2,2) --------- प्रत्येक के लिए |i-j| 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 ऐसे योग का अधिकतम मान 13 है।
उपयोग किया गया दृष्टिकोण
हम संख्याओं वाली एक पूर्णांक सरणी Arr[] लेते हैं।
फ़ंक्शन maxabsDiff(int arr[], int n) मान और सूचकांक योगों का अधिकतम निरपेक्ष अंतर निकालने के लिए उपयोग किया जाता है।
हम चर result को 0 से प्रारंभ करते हैं।
फॉर लूप के अंदर सरणी के पूर्णांकों को शुरुआत से पार करते हैं।
नेस्टेड फॉर लूप में शेष तत्वों को पार करते हैं और तत्व मान और सूचकांकों i, j का निरपेक्ष योग (abs(arr[i] - arr[j]) + abs(i - j)) निकालते हैं और एक चर absDiff में संग्रहीत करते हैं।
यदि यह नया परिकलित योग पिछले से अधिक है तो इसे 'result' में संग्रहीत करें।
पूरी सरणी पार करने के बाद result लौटाएं।
उदाहरण
#include <stdio.h> #include <math.h> // अधिकतम निरपेक्ष अंतर लौटाने वाला फ़ंक्शन 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("मान और सूचकांक योगों का अधिकतम निरपेक्ष अंतर: %d", maxabsDiff(Arr, 10)); return 0; } आउटपुट
उपरोक्त कोड चलाने पर निम्नलिखित आउटपुट उत्पन्न होगा:
मान और सूचकांक योगों का अधिकतम निरपेक्ष अंतर: 13