给出一个大小为N1×M1 的矩阵A和一个大小为N2×M2的矩阵B, 令矩阵C=A×B, 输出C.
矩阵乘法的公式为Ci,j=k=1∑M1Ai,k∗Bk,j, 矩阵C的第i行第j列是Ci,j
数据保证M1=N2
输入格式:
第一行输入两个正整数N1、M1(1≤N1,M1≤100)
接下来N1行,每行M1个数,表示第一个矩阵
接下来一行两个正整数N2、M2(1≤N2,M2≤100)
接下来N2行,每行M2个数,表示第一个矩阵
输出格式:
输出一个N1行M2列的矩阵
输入样例1:
1 2
3 2
2 1
2
2
输出样例1:
10
输入样例2:
3 2
3 3
3 3
3 3
2 4
4 4 4 4
4 4 4 4
输出样例2:
24 24 24 24
24 24 24 24
24 24 24 24
个人思路:
简单的矩阵乘法过程模拟。
注意是哪一行和哪一列对应相乘。
三层循环计即可。
代码:
#include <bits/stdc++.h>
using namespace std;
const int N = 101;
int A[N][N],B[N][N],C[N][N];
int main()
{
int n1, n2, m1, m2;
cin >> n1 >> m1;
for (int i = 0; i < n1; i++) {
for (int j = 0; j < m1; j++) {
cin >> A[i][j];
}
}
cin >> n2 >> m2;
for (int i = 0; i < n2; i++) {
for (int j = 0; j < m2; j++) {
cin >> B[i][j];
}
}
int k = 0;
for (int i = 0; i < n1; i++) {
for (int j = 0; j < m2; j++) {
for (int k = 0; k < m1; k++) {
C[i][j] += A[i][k] * B[k][i];
}
}
}
for (int i = 0; i < n1; i++) {
for (int j = 0; j < m2; j++) {
cout<<C[i][j]<<" ";
}
cout << endl;
}
}