矩阵乘法
结果矩阵第m行与第n列交叉位置的那个值,等于第一个矩阵第m行与第二个矩阵第n列,对应位置的每个值的乘积之和。
理解矩阵乘法 - 阮一峰的网络日志
如果用数组硬算也可以
但是这里写的高级一点
用结构体重载运算符
进而可以直接进行结构体乘法运算
然后直接输出就行
#include<iostream>
struct node {
int n,m;
int map[12][12];
node operator *(const node &A) {
node tmp;
tmp.n=n;
tmp.m=A.m;
for(int i=0; i<n; i++) {
for(int j=0; j<A.m; j++) {
int sum=0;
for(int k=0; k<A.n; k++)
sum+=map[i][k]*A.map[k][j];
tmp.map[i][j]=sum;
}
}
return tmp;
}
} a,b;
int main() {
int m,p,n;
while(scanf("%d %d %d",&m,&p,&n)!=EOF) {
a.n=m;
a.m=b.n=p;
b.m=n;
for(int i=0; i<m; i++)
for(int j=0; j<p; j++) {
scanf("%d",&a.map[i][j]);
}
for(int i=0; i<p; i++)
for(int j=0; j<n; j++)
scanf("%d",&b.map[i][j]);
node t=a*b;
for(int i=0; i<m; i++) {
for(int j=0; j<n; j++) {
printf("%d",t.map[i][j]);
if(j==n-1)
printf("\n");
else
printf(" ");
}
}
}
return 0;
}
题目地址:【郑轻】[1127]矩阵乘积