#温馨提示:此文章使用的是MD编辑器,在小程序上查看可能会出现乱码,敬请谅解
【题目链接】B2105 矩阵乘法
本题主要考察了二维数组的操作,我们可以按照题目及给出的运算方法 :
C
[
i
]
[
j
]
=
A
[
i
]
[
0
]
×
B
[
0
]
[
j
]
+
A
[
i
]
[
1
]
×
B
[
1
]
[
j
]
+
C[i][j]=A[i][0] \times B[0][j]+A[i][1] \times B[1][j]+
C[i][j]=A[i][0]×B[0][j]+A[i][1]×B[1][j]+ ……
+
A
[
i
]
[
m
−
1
]
×
B
[
m
−
1
]
[
j
]
(
C
[
i
]
[
j
]
+A[i][m-1] \times B[m-1][j](C[i][j]
+A[i][m−1]×B[m−1][j](C[i][j] 表示
C
C
C 矩阵中第
i
i
i 行第
j
j
j 列元素)
进行模拟即可。
AC代码如下
#include <bits/stdc++.h>
using namespace std;
int m,n,k,a[105][105],b[105][105], ans[105][105];
int main(){
cin>>n>>m>>k;
for(int i=1;i<=n;i++) // 读取矩阵A
for(int j=1;j<=m;j++) cin>>a[i][j];
for(int i=1;i<=m;i++) // 读取矩阵B
for(int j=1;j<=k;j++) cin>>b[i][j];
for(int i=1;i<=n;i++) // 计算矩阵A与矩阵B的乘积,结果存储在矩阵ans中
for(int j=1;j<=k;j++)
for(int x=1;x<=m;x++) ans[i][j]+=a[i][x]*b[x][j]; // 按照定义模拟
for(int i=1;i<=n;i++){ // 输出
for(int j=1;j<=k;j++) cout<<ans[i][j]<<' ';
cout<<endl;
}
return 0;
}
Tips:普通版稍后发