题目描述
给定一个m行n列的矩阵,在这个矩阵中任选两个数x和y,使得|x+y|最大。
输入要求
第一行两个正整数m,n( 2 < m + n < 20 );接下来输入m*n的矩阵(所有数据的范围均为(-100,100))。
输出要求
|x+y|的最大值。
输入样例
3 3
10 4 3
-1 6 9
-5 7 5
输出样例
19
思路
读出矩阵的大小。
读入矩阵。
初始化一个变量为整数的最小可能值。
遍历矩阵中每一对不同条目。
计算这一对的总和。
如果这个和的绝对值大于当前值,就更新为这个和的绝对值。
输出值。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main() {
int m, n;
scanf("%d %d", &m, &n);
int matrix[m][n];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &matrix[i][j]);
}
}
int max_sum = 0;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
for (int k = 0; k < m; k++) {
for (int l = 0; l < n; l++) {
if (i != k || j != l) {
int s = matrix[i][j] + matrix[k][l];
if (abs(s) > abs(max_sum)) {
max_sum = s;
}
}
}
}
}
}
printf("%d\n", abs(max_sum));
return 0;
}
如果你还是没有理解,欢迎私信我或者给我留言。