矩阵乘法计算
题目描述
计算两个矩阵的乘积,第一个是2 ∗ 3 2*32∗3,第二个是3 ∗ 2 3*23∗2。
输入格式
输入为两个矩阵,其中一个为2 ∗ 3 2*32∗3的矩阵,另一个为3 ∗ 2 3*23∗2的矩阵。
输出格式
输出一个2 ∗ 2 2*22∗2的矩阵(每一个数字后都跟一个空格)。
输入样例
1 2 3
3 4 5
6 7
8 9
10 11
输出样例
52 58
100 112
代码:
#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
#include <cstring>
#define MX 10005
using namespace std;
typedef vector<long long> vec;
typedef vector<vec> mat;
int n;
//用二维vector表示矩阵
const int mod = 1e9+7;
//计算矩阵A*矩阵B
mat mul(mat& a,mat& b)
{
mat c(a.size(),vec(b[0].size()));//矩阵a的行数,矩阵b的列数 ,使用vec初始化
for(int i = 0;i < a.size();i++)
{
for(int k = 0;k < b.size();k++)
{
for(int j = 0;j < b[0].size();j++)
{
c[i][j] = (c[i][j] + a[i][k] * b[k][j]%mod)%mod;
}
}
}
return c;
}
int main() {
mat a(2,vec(3)),b(3,vec(2));
for(int i = 0;i < 2;i++)
{
for(int j = 0;j < 3;j++)
{
cin>>a[i][j];
}
}
for(int i = 0;i < 3;i++)
{
for(int j = 0;j < 2;j++)
{
cin>>b[i][j];
}
}
mat c(a.size(),vec(b[0].size()));
c = mul(a,b);
for(int i = 0;i < c.size();i++)
{
for(int j = 0;j < c[0].size();j++)
{
cout<<c[i][j]<<" ";
}
cout<<endl;
}
return 0;
}