** 4983: 二维数组 **
描述
给定一个n行m列的二维数组,以及某个整数x,问二维数组中是否至少存在一行或一列,其元素之和恰好为x。
输入
输入数据的第一行为n,m,x(1<=n, m<=50)。
接下来有n行,每行有m个整数。
输出
如果二维数组中至少存在一行或一列,其元素之和为x,则输出YES,否则输出NO
样例输入
3 4 10
1 2 3 4
2 3 4 5
3 4 5 6
样例输出
YES
运行结果
代码片
#include <stdio.h>
#define N 51
int main()
{
int n,m,sum,a[N][N]={0},flag=0,i,j;
scanf("%d %d %d",&n,&m,&sum);
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
scanf("%d",&a[i][j]);//把提取的数组横向进行相加
a[i][m]+=a[i][j];
}
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
a[n][i]+=a[j][i]; //垂直相加把数值放在那列的最后一行
}
}
for(i=0;i<n;i++)
{
if(a[i][m]==sum)//如果横向数值等于数,flag=1
{
flag=1;
printf("YES");
break;
}
}
if(flag==0)//若横着的数组没有相等的,则查看是否有垂直的数值
{
for(i=0;i<m;i++)
{
if(a[n][i]==sum)//如果横向数值等于数,flag=
{
flag=1;
printf("YES");
break;
}
}
}
if(flag==0){printf("NO");}
return 0;
}