Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C에서 값과 인덱스 합계의 최대 절대 차이


정수 배열이 제공됩니다. 작업은 값과 인덱스 합계의 최대 절대 차이를 계산하는 것입니다. 즉, 배열의 각 인덱스 쌍(i,j)에 대해 | Ar[i] - A[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] | + | 아이지 | 다음과 같습니다

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] | + | 아이지 | 다음과 같습니다

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로 초기화합니다.

  • for 루프 내에서 처음부터 정수 배열을 탐색합니다.

  • 중첩 for 루프에서 나머지 요소를 탐색하고 요소 값과 인덱스 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