ホームページ >バックエンド開発 >C++ >C言語では、値とインデックスの合計の差の絶対値の最大値

C言語では、値とインデックスの合計の差の絶対値の最大値

WBOY
WBOY転載
2023-08-25 20:25:031167ブラウズ

C言語では、値とインデックスの合計の差の絶対値の最大値

整数の配列を取得します。このタスクは、値の合計と指数の間の最大絶対差を計算することです。つまり、配列内のインデックスのペア (i,j) ごとに、 | Arr[i] - A[j] | Arr[i] - A[j] | Arr[i] - A[j] を計算する必要があります。 ] | Arr[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))。

Input − Arr[] = { 1,2,4,5 }

Output − 値と指数の合計の間の最大絶対差− 7

説明 - インデックスペアの合計 | A[i]-A[j] | A[i]-A[j] |i-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.

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

Output − value とインデックスの差の最大絶対値 − 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 に格納します。

  • この新しく計算された合計が前の合計よりも大きい場合は、それを「結果」に保存します。

  • 配列全体を走査した後に結果を返します。

デモ

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

出力

上記のコードを実行すると、次の出力が生成されます-

リーリー

以上がC言語では、値とインデックスの合計の差の絶対値の最大値の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。