A+B for Matrices(1001)

题目描述:                       

    This time, you are supposed to find A+B where A and B are two matrices, and then count the number of zero rows and columns.

输入:                       

    The input consists of several test cases, each starts with a pair of positive integers M and N (≤10) which are the number of rows and columns of the matrices, respectively. Then 2*M lines follow, each contains N integers in [-100, 100], separated by a space. The first M lines correspond to the elements of A and the second M lines to that of B.

    The input is terminated by a zero M and that case must NOT be processed.

输出:                       

    For each test case you should output in one line the total number of zero rows and columns of A+B.

样例输入:                       
2 2
1 1
1 1
-1 -1
10 9
2 3
1 2 3
4 5 6
-1 -2 -3
-4 -5 -6
0
样例输出:                       
1
5
===========================================================
#include<stdio.h>
void main()
{
	int m,n,temp;
	int a[14][14],b[14][14],c[14],d[14];
	int i,j;
	while(scanf("%d %d",&m,&n)!=EOF && m!=0)
	{
		for(i=0;i<m;i++)
		{
			c[i]=-1;
			for(j=0;j<n;j++)
			{
				scanf("%d",&a[i][j]);
				d[j]=-1;
			}
		}
		for(i=0;i<m;i++)
			for(j=0;j<n;j++)
				scanf("%d",&b[i][j]);
		
		for(i=0;i<m;i++)
			for(j=0;j<n;j++)
			{
				if(a[i][j]+b[i][j]!=0)
				{
					if(c[i]==-1)
						c[i]=1;
					if(d[j]==-1)
						d[j]=1;
				}
			}
		temp=m+n;
		for(i=0;i<m;i++)
			if(c[i]!=-1)
				temp--;
		for(j=0;j<n;j++)
			if(d[j]!=-1)
				temp--;
		printf("%d\n",temp);
	}
}
===========================================================
 
题目的理解很重要,英文更重要。
 
本题要求将矩阵A与矩阵B相加后的结果矩阵C,C中为零的行数与列数相加,输出相加结果。

本题采用标志的方法,而不是采用记录矩阵相加的结果矩阵,会相对减少空间,以及循环次数。

如有不同意见,欢迎交流!

===========================================================
 
 
来源:                        
2011年浙江大学计算机及软件工程研究生机试真题
扫描二维码关注公众号,回复: 2218874 查看本文章

猜你喜欢

转载自blog.csdn.net/u013004700/article/details/44183501