T611430 对角线和

对角线和解题思路

解题思路

  1. 理解对角线:n×n矩阵有两条对角线:

    • 主对角线:从左上到右下(行号=列号)

    • 副对角线:从右上到左下(行号+列号=n+1)

  2. 避免重复计算:当n为奇数时,中心元素会被两条对角线各计算一次,需要减去一次

  3. 输入处理:先读取矩阵大小n,然后读取n×n矩阵

  4. 计算和:分别计算两条对角线的和,再处理可能的重复计算情况

代码注释

#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; // 程序正常结束
}

 

posted @ 2025-05-27 14:04  CRt0729  阅读(71)  评论(0)    收藏  举报