找到矩阵中总和最大的列并打印出来

Posted

技术标签:

【中文标题】找到矩阵中总和最大的列并打印出来【英文标题】:Find the column with biggest sum in matrix and print it out 【发布时间】:2022-01-18 07:43:45 【问题描述】:

我正在编写一个程序,您输入 n 行 x m 列矩阵,然后找到总和最大的列并将该列打印出来,我正在尝试打印该列。任何帮助将不胜感激。

例如:

  Input            Output
4 5 6 4 0 0          4
4 2 3 2 2 2          4
6 5 2 1 0 1          6

我的结果:

  Input            Output
4 5 6 4 0 0         
4 2 3 2 2 2          14
6 5 2 1 0 1

还有我的代码:

#include<stdio.h>
void Entermatrix(int a[][50], int &n,int &m)

 printf("Enter matrix's rows: ");
 scanf("%d",&n);
 printf("Enter matrix's columms: ");
 scanf("%d",&m);
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
            printf("A[%d][%d]= ",i,j);
            scanf("%d",&a[i][j]);
    

void Printmatrix(int a[][50], int n, int m)

    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++) 
            printf("%5d",a[i][j]);
   
    printf("\n");

void Columnwithbiggestsum(int a[][50],int n,int m)

    int max=0;
    
    for(int i=0;i<m;i++)
    
        int sum=0;
        for(int j=0;j<n;j++)
            sum = sum+a[j][i];
        
        if (sum >max)
            max=sum;
           
        printf ("The biggest sum by column is: %d",max);

int main()

 int a[50][50],n,m;
 Entermatrix(a,n,m);
 Printmatrix(a,n,m);
 Columnwithbiggestsum(a,n,m);
 return 0;

【问题讨论】:

您只存储最大总和,而不是它出现的列。因此,您无法知道在交付结果时要输出哪一列。 您没有描述具体的错误或不正确的行为。你有什么具体问题?请至少给出准确的输入、预期结果和实际结果。 是的,我正在努力解决,请问您有什么想法或建议吗? 不,我没有任何错误,我的代码运行完美,但我不知道如何打印矩阵中总和最大的列,所以我在这里跨度> 我正在使用 DEVC++ 【参考方案1】:

在“Columnwithbiggestsum”函数中,您可以保留另一个变量来存储总和最高的列号。

一旦有了列号,您就可以在矩阵中迭代以打印该列的内容。

修改了代码以打印列

void Columnwithbiggestsum(int a[][50],int n,int m)

    int max=0;
    int columnNo=0;
    for(int i=0;i<m;i++)
    
        int sum=0;
        for(int j=0;j<n;j++)
            sum = sum+a[j][i];
        
        if (sum >max)
            max=sum;
            columnNo = i;
           
    
   
    for(int i=0;i<n;i++)
    
        printf ("%d \n", a[i][columnNo]);
    

【讨论】:

问题解决了,非常感谢!你让我开心。 BitMask,带有"%d \n",为什么在int'\n'之间打印一个空格? 是的,你是对的,那里不需要额外的空间,但我添加它是为了更好的可读性,你可以根据需要删除它。

以上是关于找到矩阵中总和最大的列并打印出来的主要内容,如果未能解决你的问题,请参考以下文章

遍历火花数据框中的列并计算最小值最大值

在排除某些行的矩阵的列中查找最大元素

寻找总和最大的子矩阵[重复]

最大化矩阵中“非重叠”数字的总和

DB2查询合并2个十进制列并找到最大值

2018.10.22图图的游戏 / 图图的设计 / 图图的旅行