给出2个N * N的矩阵M1和M2,输出2个矩阵相乘后的结果。
Input
第1行:1个数N,表示矩阵的大小(2 <= N <= 100) 第2 - N + 1行,每行N个数,对应M1的1行(0 <= M1[i] <= 1000) 第N + 2 - 2N + 1行,每行N个数,对应M2的1行(0 <= M2[i] <= 1000)
Output
输出共N行,每行N个数,对应M1 * M2的结果的一行。
Input示例
2 1 0 0 1 0 1 1 0
Output示例
0 1 1 0
#include <iostream> #include <stdio.h> #include <string.h> #include <stdio.h> #define M(n,m) memset(n,m,sizeof(n)); using namespace std; int a[111][111]; int b[111][111]; int c[111][111]; int n; void Judge(int x,int y){ int sum = 0; for(int i = 1;i <= n;i ++) sum += a[x][i] * b[i][y]; c[x][y] = sum; } int main(){ while(~scanf("%d",&n)){ M(a,0) M(b,0) M(c,0) for(int i = 1;i <= n;i ++) for(int j = 1;j <= n;j ++) scanf("%d",&a[i][j]); for(int i = 1;i <= n;i ++) for(int j = 1;j <= n;j ++) scanf("%d",&b[i][j]); for(int i = 1;i <= n;i ++) for(int j = 1;j <= n;j ++) Judge(i,j); for(int i = 1;i <= n;i ++){ for(int j = 1;j < n;j ++) printf("%d ",c[i][j]); printf("%d\n",c[i][n]); } } }