c++ - 矩阵的行、列和对角线之和

标签 c++ c c++11

求矩阵对角线、行、列之和中的最大值的程序。找不到对角求和代码的问题。

对于输入:

2
16 4
-3 5 

预期输出应为 21,而实际输出为 9。

#include<stdio.h>
//Main Function

int main()
{
int n,a[101][101],i,j;
int max=0,sum=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
    for(j=0;j<n;j++)
    {
        scanf("%d",&a[i]);
    }
}
j=0;

    //COLOUMN SUM
    while(j<n)
{
    sum=0;
    for(i=0;i<n;i++)
        sum+=a[i][j];
        if(sum>max)
        max=sum;
        j++;
} 
i=0;
//ROW SUM
    while(i<n)
{
    sum=0;
    for(j=0;j<n;j++)
    sum+=a[i][j];        
        i++;
        if(sum>max)
        max=sum;
    }

     //DIAGONAL SUM the main problem
sum=0;
for(i=0;i<n;i++)
{
     for(j=0;j<n;j++)
     {
       if(i==j)
       sum+=a[i][j];
      }
}

if(sum>max)
max=sum;
sum=0;
    for(i=0;i<n;i++)
{
    for(j=0;j<n;j++)
    {
            if(i+j==n-1)
    sum+=a[i][j];
    }
}
if(sum>max)
max=sum;
printf("%d",max);
return 0;

}

最佳答案

您错误地读入数组:

scanf("%d",&a[i]);

这应该是:

scanf("%d",&a[i][j]);

关于c++ - 矩阵的行、列和对角线之和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22437095/

相关文章:

c++ - 尝试创建可变参数 C++ 输入函数

c - 中断处理程序代码与用户代码同时执行

c++ - 如何将 peek 函数添加到我的堆类中?

c++ - map::emplace 在什么时候创建对象?

c++ - 有没有比声明 CStringT<> 的 char 类型适当实例更好的方法

c++ - 阅读通过 PuTTY 传递的低级鼠标点击 Unix

c# - 从非托管 C++ 调用 C# 函数(通过托管包装器)

c - 进程 ID 和 fork()

计算并找出 c 中成对值的差异

c++ - 使用成员字段调用可变类模板的成员方法