We are given with an array of integers. The task is to calculate the maximum absolute difference of value and index sums. That is for each pair of indexes (i,j) in an array, we have to calculate | Arr[i] - A[j] | + |i-j| and find the maximum such sum possible. Here |A| means absolute value of A. If array has 4 elements then indexes are 0,1,2,3 and unique pairs will be ( (0,0), (1,1), (2,2), (3,3), (0,1), (0,2), (0,3), (1,2), (1,3), (2,3) ).
Input − Arr[] = { 1,2,4,5 }
Output − Maximum absolute difference of value and index sums − 7
Explanation − Index pairs and | A[i]-A[j] | + | i-j | are as follows
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.
输入 − Arr[] = { 10,20,21 }
输出 − 值和索引之差的最大绝对值 − 13
解释 − 索引对和 | A[i]-A[j] | + | i-j | 如下所示
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)用于计算值和索引之和的最大绝对差。
我们将变量result初始化为-1。
在for循环中从数组的开头遍历整数数组。
在嵌套的for循环中遍历剩余的元素,并计算元素值和索引i、j的绝对和(abs(arr[i] - arr[j]) + abs(i - j)),并将其存储在变量absDiff中。
如果这个新计算的和大于之前的和,则将其存储在'result'中。
在遍历整个数组后返回result。
演示
#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; }
If we run the above code it will generate the following output −
Maximum absolute difference of value and index sums: 13