week5-[二维数组]对角线
week5-[二维数组]对角线
题目描述
给定一个 n×nn\times nn×n 的正方形二维数组,输出它两条对角线上元素的和。
输入格式
输入共 n+1n + 1n+1 行。
第 111 行 111 个正整数 nnn。
接下来 nnn 行,每行 nnn 个正整数 aija_{ij}aij 表示这个二维数组。
输出格式
输出共 111 行 111 个正整数表示答案。
样例 #1
样例输入 #1
4
1 2 3 4
5 6 7 8
9 8 7 6
4 5 2 1
样例输出 #1
38
样例 #2
样例输入 #2
3
1 2 3
4 5 6
4 3 2
样例输出 #2
15
提示
样例解释 222
1+5+2+3+4=151+5+2+3+4=151+5+2+3+4=15。中心的那个 555 不能计算两次。
数据范围
对于所有数据,1≤n,aij≤1001 \leq n,a_{ij}\leq 1001≤n,aij≤100。
思路
- 输入 nnn,再读入 n×nn \times nn×n 的矩阵;
- 累加主对角线元素;
- 累加副对角线元素;
- 如果 nnn 是奇数,减去中心元素一次。
参考代码(C++)
#include <bits/stdc++.h>
using namespace std;int main() {int n;cin >> n;int a[110][110];for (int i = 0; i < n; i++)for (int j = 0; j < n; j++)cin >> a[i][j];int sum = 0;for (int i = 0; i < n; i++) {sum += a[i][i]; // 主对角线sum += a[i][n - 1 - i]; // 副对角线}if (n % 2 == 1) {sum -= a[n / 2][n / 2]; // 中心元素减去一次}cout << sum << "\n";return 0;
}