Home > Backend Development > C++ > body text

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

WBOY
Release: 2023-08-25 20:25:03
forward
1152 people have browsed it

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.
Copy after login

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.
Copy after login

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;
}
Copy after login

Output

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

Maximum absolute difference of value and index sums: 13
Copy after login

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!

source:tutorialspoint.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template