读取矩阵,输出所有(i,j)对,其中第i行的总和等于第j列

读取一个矩阵,输出所有(i,j)对,其中第i行的总和等于第j列。

例:

输入:

1   2  14  8
2   4  3   4
15  7  8  -5

输出:

(1,1),(0,2),(2,2)//以任何顺序

代码:

#include <stdio.h>
#define max 50

int main()
{
    int i=0, j=0, r, c; 
    int arr[max][max], sum_r[max], sum_c[max];
    printf("Enter the number of rows(r):");
    scanf("%d",&r);
    printf("Enter the number of columns(c):");
    scanf("%d",&c);

    for(i=0;i<r;i++)
    {
        for(j=0;j<c;j++)
        {
            printf("a[%d][%d]:",i,j);
            scanf("%d",&arr[i][j]);
        }
    }

    for(i=0;i<r;i++)
    {
        sum_r[i]=0;
        for(j=0;j<c;j++)
        {
            sum_r[i] = sum_r[i] + arr[i][j];
        }
        i++;
    }

    for(j=0;j<r;j++)
    {
        sum_c[j]=0;
        for(i=0;i<r;i++)
        {
            sum_c[j] = sum_c[j] + arr[i][j];
        }
        j++;
    }

    for(i=0;i<r;i++)
    {
        for(j=0;j<c;j++)
        {
            if(sum_r[i]==sum_c[j]) printf("(%d,%d)",i,j);
        }
    }

    return 0;    
}

我的输出:

(0,2)(1,1)(1,3)(2,2)//额外(1,3)为什么??

此外,此代码不适用于其他输入情况。无法找出任何错误。

评论
  • gminus
    gminus 回复

    In the for loop to compute sum_c, you count j only up to r instead of to c.