问题描述
小明最近刚刚学习了矩阵乘法,但是他计算的速度太慢,于是他希望你能帮他写一个矩阵乘法的运算器。
输入格式
输入的第一行包含三个正整数 N, M, K,表示一个 N * M 的矩阵乘以一个 M * K 的矩阵。
接下来 N 行,每行 M 个整数,表示第一个矩阵。再接下来的 M 行,每行 K 个整数,表示第二个矩阵。
输出格式
输出有 N 行,每行 K 个整数,表示矩阵乘法的结果。
样例输入
2 1 3
1
2
1 2 3
样例输出
1 2 3
2 4 6
数据范围
0 < N, M, K ≤ 100
0 ≤ 矩阵中的每个数 ≤ 1000。
题解
线性代数:
#include <iostream>
using namespace std;
const int N = 110;
int a[N][N], b[N][N], c[N][N];
int main()
{
int n, m, q;
cin >> n >> m >> q;
for (int i = 1; i <= n; i ++)
for (int j = 1; j <= m; j ++)
cin >> a[i][j];
for (int i = 1; i <= m; i ++)
for (int j = 1; j <= q; j ++)
cin >> b[i][j];
for (int i = 1; i <= n; i ++)
for (int j = 1; j <= q; j ++)
for (int k = 1; k <= m; k ++)
c[i][j] += a[i][k] * b[k][j];
for (int i = 1; i <= n; i ++)
{
for (int j = 1; j <= q; j ++)
cout << c[i][j] << " ";
cout << endl;
}
return 0;
}