Home  >  Article  >  Backend Development  >  In C language, the maximum absolute difference between the sum of value and index

In C language, the maximum absolute difference between the sum of value and index

WBOY
WBOYforward
2023-08-25 20:25:031108browse

In C language, the maximum absolute difference between the sum of value and index

We get an array of integers. The task is to calculate the maximum absolute difference between the sum of values ​​and exponents. That is, for each pair of indices (i,j) in the array, we have to compute | Arr[i] - A[j] | Arr[i] - A[j] | Arr[i] - A[j] | Arr[i] - A[j] |i-j| and find the maximum possible sum. Here |A| represents the absolute value of A. If the array has 4 elements, the indices are 0,1,2,3 and the 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 between value and sum of exponents− 7

Explanation - The index pair sum | A[i]-A[j] | A[i]-A[j] |i-j | is 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.

Input − Arr[] = { 10,20,21 }

Output − Maximum absolute value of the difference between value and index − 13

Explanation − The index pair sum | A[i]-A[j] | | i-j | is as follows

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.

The method used in the following program is as follows:

  • We use an integer array Arr[]

  • The function maxabsDiff(int arr[], int n) is used to calculate the maximum absolute difference between the sum of the value and the index.

  • We initialize the variable result to -1.

  • Traverse an array of integers from the beginning of the array in a for loop.

  • Traverse the remaining elements in the nested for loop and calculate the absolute sum of the element value and index i, j (abs(arr[i] - arr[j]) abs (i - j)) and store it in the variable absDiff.

  • If this newly calculated sum is greater than the previous sum, store it in 'result'.

  • Return the result after traversing the entire array.

Example

Demonstration

#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;
}

Output

If we run the above code, it will generate the following output-

Maximum absolute difference of value and index sums: 13

The above is the detailed content of In C language, the maximum absolute difference between the sum of value and index. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:tutorialspoint.com. If there is any infringement, please contact admin@php.cn delete