今天刷的题目是1001,题目用英文给出,但不难解读。
题目的意思是说,输入两个矩阵A和B(二者彼此的行数相同,列数相同),进行矩阵加法得到A+B,统计A+B矩阵中零行和零列的数量。
思路:
首先是计算A+B,这个不难,可以用二维数组实现。
其次是统计零行和零列,先明确概念,零行指的是整个行的每个数都为0的行,零列指的是整个列里的每个数都为0的列。那么我们只须分行和分列对数组进行遍历。
代码如下:
C++版本
#include<iostream> #include<stdio.h> using namespace std; int main(){ int m,n; while(cin>>m){ if(m == 0)break;//根据题目要求和样例,当m为0时,表示输入结束,退出 cin>>n; int p[10][10]; //输入矩阵A for(int i = 0; i < m; i++) for(int j = 0; j < n; j++) cin>>p[i][j]; //输入矩阵B,并直接加到矩阵A上,得到A+B for(int i = 0; i < m; i++) for(int j = 0; j < n; j++){ int temp; cin>>temp; p[i][j] += temp; } int num = 0;//统计零行和零列 for(int i = 0; i < m; i++){ int j = 0; for(; j < n; j++){ if( p[i][j] != 0) break;//只要发现有一个数不是0,即break } if( j == n) num++;//判断是否因发现非0的数而被break } for(int j = 0; j < n; j++){ int i = 0; for(; i < m; i++){ if( p[i][j] != 0)break; } if( i == m) num++; } printf("%d\n",num); } return 0; }
时间: 2024-10-05 12:46:01