2172. 【一命通关】之二维数组
1000ms
512MB
简单
一命通关系列
题目描述
欢迎来到"一命通关"系列第三关!本关考验你对二维数组(矩阵)的操作能力。
给定一个 n×n 的方阵(行数和列数相等),请完成以下五个任务:
任务1:逐行输出
按行优先顺序输出整个矩阵,每行元素之间用空格分隔,每行结束后换行。
任务2:主对角线求和
计算从左上角到右下角的主对角线上所有元素的和。
(提示:主对角线上的元素满足行号等于列号,即 a[i][i])
任务3:副对角线求和
计算从右上角到左下角的副对角线上所有元素的和。
(提示:副对角线上的元素满足行号 + 列号 = n + 1,即 a[i][n-i+1])
任务4:边界元素之和
计算矩阵最外层一圈(第一行、最后一行、第一列、最后一列)所有元素的总和。注意:四个角的元素只计算一次。
任务5:寻找最大值及其坐标
找出整个矩阵中的最大值,并输出它所在的行号和列号(下标均从 1 开始)。如果有多个相同的最大值,输出行号最小的;如果行号也相同,输出列号最小的。
输入格式
第一行输入一个正整数 n(1 ≤ n ≤ 10),表示矩阵的大小。
接下来 n 行,每行输入 n 个整数,表示矩阵的元素,每个整数的绝对值不超过 1000。
输出格式
按照上述五个任务的顺序依次输出:
- 前 n 行:逐行输出的矩阵内容。
- 第 n+1 行:主对角线之和。
- 第 n+2 行:副对角线之和。
- 第 n+3 行:边界元素之和。
- 第 n+4 行:最大值、行号、列号(格式:
Max: 值 Row: 行 Col: 列)。
样例 1
输入 (Input)
3 1 2 3 4 5 6 7 8 9
输出 (Output)
1 2 3 4 5 6 7 8 9 15 15 40 Max: 9 Row: 3 Col: 3
样例说明
(解释:
主对角线:1+5+9=15
副对角线:3+5+7=15
边界:1+2+3+6+9+8+7+4 = 40 (注意5在中间不算)
)
- 定义二维数组:
int a[15][15];(建议开大一点) - 双重循环:处理二维数组通常需要两层嵌套循环,外层控制行 i,内层控制列 j。
- 边界判断:对于任务4,一个元素属于边界当且仅当
i==1或i==n或j==1或j==n。 - 坐标记录:在寻找最大值时,如果发现更大的值,不仅要更新最大值,还要同时更新对应的行号 maxRow 和列号 maxCol。
› 输入 stdin
CtrlShiftEnter
‹ 输出 stdout
错误 stderr
操作成功