在C语言中,值和索引之和的最大绝对差

在C语言中,值和索引之和的最大绝对差

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] | + | 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中。

  • 如果这个新计算的和大于之前的和,则将其存储在’result’中。

  • 在遍历整个数组后返回result。

示例

演示

#include
#include
// 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 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

登录后复制

以上就是在C语言中,值和索引之和的最大绝对差的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!

上一篇 使用SWIG将C/C++包装为Python
下一篇 如何使用C++进行高效的数据可视化?