给出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
题解:按定义模拟
AC代码:
1 #include <iostream> 2 using namespace std; 3 int n; 4 struct matrix 5 { 6 int m[105][105]; 7 }; 8 matrix mul(matrix A,matrix B) 9 { 10 matrix ret; 11 for(int i=0;i<n;i++) 12 for(int j=0;j<n;j++) 13 { 14 ret.m[i][j]=0; 15 for(int k=0;k<n;k++) 16 ret.m[i][j]+=A.m[i][k]*B.m[k][j]; 17 } 18 return ret; 19 } 20 int main() 21 { 22 cin>>n; 23 matrix A,B,ans; 24 for(int i=0;i<n;i++) 25 for(int j=0;j<n;j++) 26 cin>>A.m[i][j]; 27 for(int i=0;i<n;i++) 28 for(int j=0;j<n;j++) 29 cin>>B.m[i][j]; 30 ans=mul(A,B); 31 for(int i=0;i<n;i++) 32 for(int j=0;j<n;j++) 33 { 34 cout<<ans.m[i][j]; 35 if(j==n-1) 36 cout<<endl; 37 else 38 cout<<" "; 39 } 40 return 0; 41 }