直接套用矩阵模板。
-
题目描述:
-
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
-
答疑:
- 解题遇到问题?分享解题心得?讨论本题请访问: http://t.jobdu.com/thread-7724-1-1.html
#include <iostream>
#include <cstdio>
#define MAZSIZE_MATRIX 15
using namespace std;
struct Matrix{
int data[MAZSIZE_MATRIX][MAZSIZE_MATRIX];
int row,column;
Matrix(int row=0,int column=0){//若是大while而后才知道row与column ,切记手动修改
this->row=row;
this->column=column;
}
void zeroMatrix(){//init all elem ->0
for (int i=0;i<row;i++)
for (int j=0;j<column;j++)
data[i][j]=0;
}
Matrix operator+(const Matrix matr)const{//this+matr,1.same rowNum,same columnNum;2.return the result matrix,temp
Matrix temp(row,column);
temp.zeroMatrix();
for (int i=0;i<row;i++){
for (int j=0;j<column;j++){
temp.data[i][j]+=data[i][j]+matr.data[i][j];
}
}
return temp;
}
};
int main(){
int m,n;
Matrix matr1,matr2,ans;
int cnt;
bool allZero;
while (scanf("%d",&m),m){
scanf("%d",&n);
//initiate
cnt=0;
matr1.row=matr2.row=m;
matr1.column=matr2.column=n;
//input
for (int i=0;i<m;i++){
for (int j=0;j<n;j++){
scanf("%d",&matr1.data[i][j]);
}
}
for (int i=0;i<m;i++){
for (int j=0;j<n;j++){
scanf("%d",&matr2.data[i][j]);
}
}
//add & count
ans=matr1+matr2;
for (int i=0;i<m;i++){
allZero=true;
for (int j=0;j<n;j++){
if (ans.data[i][j]!=0){
allZero=false;
break;
}
}
if (allZero==true){
cnt++;
}
}
for (int j=0;j<n;j++){
allZero=true;
for (int i=0;i<m;i++){
if (ans.data[i][j]!=0){
allZero=false;
break;
}
}
if (allZero==true){
cnt++;
}
}
//output
printf("%d\n",cnt);
}
return true;
}