#include <cstdio> #include <iostream> using namespace std; const int maxn = 10; struct Matrix { int row, col; int matrix[maxn][maxn]; Matrix() {}; Matrix(int r, int c) : row(r), col(c) {} }; Matrix Add(Matrix x, Matrix y) { Matrix answer = Matrix(x.row, x.col); for (int i = 0; i < answer.row; i++) { for (int j = 0; j < answer.col; j++) { answer.matrix[i][j] = x.matrix[i][j] + y.matrix[i][j]; } } return answer; } int main() { int m, n; while (scanf("%d%d", &m, &n) != EOF) { if (m == 0) { break; } int res=0; Matrix x(m, n); Matrix y(m, n); for (int i = 0; i < x.row; i++) { for (int j = 0; j < x.col; j++) { scanf("%d", &x.matrix[i][j]); } } for (int i = 0; i < y.row; i++) { for (int j = 0; j < y.col; j++) { scanf("%d", &y.matrix[i][j]); } } Matrix answer = Add(x, y); bool tag = true; for (int i = 0; i < x.row; i++) { //行固定,遍历列是否为0 for (int j = 0; j < x.col; j++) { if (answer.matrix[i][j] != 0) {//ij,第一个变量i不变,row不变 tag = false; break; } } if (tag == true) { res++; } tag = true; //恢复标志位 } for (int i = 0; i < x.col; i++) { //列固定,遍历行是否为0 for (int j = 0; j < x.row; j++) { if (answer.matrix[j][i] != 0) {//ji,第一个变量i不变,col不变 tag = false; break; } } if (tag == true) { res++; } tag=true; } printf("%d\n", res); } return 0; }