整数の配列を取得します。このタスクは、値の合計と指数の間の最大絶対差を計算することです。つまり、配列内のインデックスのペア (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 サイトの他の関連記事を参照してください。