题目描述
计算两个矩阵的乘积,第一个是23矩阵,第二个是32矩阵,结果为一个2*2矩阵。
输入
输入包含多组数据,先输入一个23矩阵,再输入一个32矩阵。
输出
输出两个矩阵的乘积。
样例输入
1 1 1
1 1 1
1 1
1 1
1 1
样例输出
3 3
3 3
#include <iostream>
using namespace std;
int main()
{
int x;
int a[2][3];
int b[3][2];
while (cin >> x)
{
int c[2][2] = {0};
a[0][0] = x;
cin >> a[0][1] >> a[0][2];
for (int i = 0; i < 3; i++)
{
cin >> a[1][i];
}
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 2; j++)
{
cin >> b[i][j];
}
}
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 2; j++)
{
for (int k = 0; k < 3; k++)
{
c[i][j] += a[i][k] * b[k][j];
}
}
}
cout << c[0][0] << ' ' << c[0][1] << endl;
cout << c[1][0] << ' ' << c[1][1] << endl;
}
return 0;
}
拓展
两个矩阵A:m×n,B:n×p相乘,其时间复杂度为
O
(
n
∗
p
∗
m
)
O(n*p*m)
O(n∗p∗m)
for (int i = 0; i < m; i++)
{
for (int j = 0; j < p; j++)
{
for (int k = 0; k < n; k++)
{
c[i][j] += a[i][k] * b[k][j];
}
}
}