
我们得到了一个整数数组。任务是计算值和指数和的最大绝对差。也就是说,对于数组中的每对索引 (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) )。
输入 − Arr[] = { 1,2,4,5 }
输出 − 值与指数总和的最大绝对差 − 7
解释 - 索引对和 | A[i]-A[j] | A[i]-A[j] + |我-j |如下
立即学习“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[]
久久企业网站后台管理系统1.0下载一、功能简介本软件完全适应大、中、小型网站建设需要,让您用很便宜的虚拟主机空间也可以开通4个独立的网站!久久企业网站后台管理系统各种版本开发基础架构均为php+mysql+div+css+伪静态,迎合搜索引擎排名的喜好。另外值得一提的是本站特色的TAG系统可为您的网站做出无限分类,不用任何设置全站ULR伪静态!本建站系统除了有产品发布、新闻(软文)发布、订单管理系统和留言反馈等一些最基本的功能之外
函数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 < 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










