51nod 矩阵乘法
地址 https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1137
1137 矩阵乘法
基准时间限制:1 秒 空间限制:131072 KB 分值: 0
给出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
分析:矩阵乘法的模版题- -
贴一下敬爱的队长的介绍视频
http://www.bilibili.com/video/av8570006/?from=search&seid=6958108314519762445
代码如下:
#include <cstdio> #include <algorithm> using namespace std; int M1[110][110]; int M2[110][110]; int M[110][110]; int main() { int n; scanf("%d",&n); for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)scanf("%d",&M1[i][j]); for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)scanf("%d",&M2[i][j]); for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { M[i][j]=0; for(int k=1;k<=n;k++) M[i][j]+=M1[i][k]*M2[k][j]; } } for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { j==1?printf("%d",M[i][j]):printf(" %d",M[i][j]); } printf("\n"); } }