T611430 对角线和
对角线和解题思路
解题思路
-
理解对角线:n×n矩阵有两条对角线:
-
主对角线:从左上到右下(行号=列号)
-
副对角线:从右上到左下(行号+列号=n+1)
-
-
避免重复计算:当n为奇数时,中心元素会被两条对角线各计算一次,需要减去一次
-
输入处理:先读取矩阵大小n,然后读取n×n矩阵
-
计算和:分别计算两条对角线的和,再处理可能的重复计算情况
代码注释
#include<bits/stdc++.h> using namespace std; int n, a[100][100]; // 定义矩阵大小n和足够大的矩阵a(题目n≤50,这里定义100足够) int main() { // 读取矩阵大小n cin >> n; // 读取n×n矩阵 for(int i = 1; i <= n; i++) for(int j = 1; j <= n; j++) cin >> a[i][j]; // 将输入存入数组a int sum = 0; // 初始化对角线和 // 计算主对角线(左上到右下)的和 for(int i = 1; i <= n; i++) sum += a[i][i]; // 行号等于列号的元素 // 计算副对角线(右上到左下)的和 for(int i = 1; i <= n; i++) sum += a[i][n - i + 1]; // 行号+列号等于n+1的元素 // 如果n是奇数,中心元素被加了两次,需要减去一次 if(n % 2 == 1) sum -= a[n / 2 + 1][n / 2 + 1]; // 中心元素位置 // 输出最终对角线和 cout << sum; return 0; // 程序正常结束 }

浙公网安备 33010602011771号