B2105 矩阵乘法 题解

· · 题解

矩阵乘法中第一个矩阵的列要等于第二个矩阵的行,一个 n\times mA 矩阵,和一个 m\times kB 矩阵相乘,将得到一个 n\times k 的矩阵 C

c_{i,j}=\sum^m_{p=1}{a_{i,p}b_{p,j}}

模拟即可。

代码如下:

#include<bits/stdc++.h>
using namespace std;
#define MAXN 105
int n,m,k,a[MAXN][MAXN],b[MAXN][MAXN],c[MAXN][MAXN];
int main(){
    cin>>n>>m>>k;
    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<=k;++j){
            cin>>b[i][j];
        }
    }
    for(int i=1;i<=n;++i){
        for(int j=1;j<=k;++j){
            for(int p=1;p<=m;++p){
                c[i][j]+=a[i][p]*b[p][j];
            }
        }
    }
    for(int i=1;i<=n;++i){
        for(int j=1;j<=k;++j){
            cout<<c[i][j]<<" ";
        }cout<<endl;
    }
    return 0;
}