1 条题解
-
0
C :
#include <stdio.h> int main() { while(1) { int m,n; scanf("%d",&m); if(m==0) { break; } scanf("%d",&n); int A[20][20]; int B[20][20]; for(int i=0;i<m;i++) { for(int j=0;j<n;j++) { scanf("%d",&A[i][j]); } } for(int i=0;i<m;i++) { for(int j=0;j<n;j++) { scanf("%d",&B[i][j]); } } int count=0; int flag=0; for(int i=0;i<m;i++) { flag=0; for(int j=0;j<n;j++) { if(A[i][j]+B[i][j]!=0) { flag=1; break; } } if(flag==0) { count++; } } for(int i=0;i<n;i++) { flag=0; for(int j=0;j<m;j++) { if(A[j][i]+B[j][i]!=0) { flag=1; break; } } if(flag==0) { count++; } } printf("%d\n",count); } }
C++ :
#include <stdio.h> // 定义三个矩阵,分别存储将要输入的两个矩阵以及两个矩阵的和 int a[11][11]; int b[11][11]; int c[11][11]; /* * 将矩阵 a 和矩阵 b 相加 * 传入的是矩阵的行数 m 以及列数 n * 将矩阵 a 和矩阵 b 的结果存储在矩阵 c 中 */ void addM(int m,int n){ for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ c[i][j] = a[i][j] + b[i][j]; } } } /* * 获得答案:遍历查看有多少零行和零列 */ int getAns(int m, int n){ int ans = 0; for(int i=0;i<m;i++){ // 先遍历零行 int j=0; for(j=0;j<n;j++){ // 每行中从第一列开始 if(c[i][j]){ break; } } if(j == n){ // 如果整行遍历完了没有发现非零值,则这一行是零行 ans ++; // 这样的话结果增加 1 } } for(int i=0;i<n;i++){ // 然后遍历列,方法与遍历行是一样的 int j=0; for(j=0;j<m;j++){ if((c[j][i])){ break; } } if(j == m){ ans ++; } } return ans; // 返回遍历的结果 } int main(){ int m, n; while(scanf("%d", &m), m){ // 读入行数,如果某次行数为0,则说明输入结束了 scanf("%d", &n); for(int i=0;i<m;i++){ // 读入第一个矩阵的数据 for(int j=0;j<n;j++){ scanf("%d",&a[i][j]); } } for(int i=0;i<m;i++){ // 读入第二个矩阵的数据 for(int j=0;j<n;j++){ scanf("%d",&b[i][j]); } } addM(m,n); // 求两个矩阵的和 printf("%d\n",getAns(m,n)); // 输出结果 } return 0; }
- 1
信息
- ID
- 2075
- 时间
- 1000ms
- 内存
- 32MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者