先挂上题目链接~https://www.patest.cn/contests/gplt/L1-048
分析:两个矩阵的相乘(a*b)非常的基础,实际上核心代码只有4行,自己慢慢推敲就能得到了。
for(int i = 1; i<=ra; i++) //ra为a矩阵的行数
for(int j = 1; j<=cb; j++) //cb为b矩阵的列数
for(int k = 1; k<=ca; k++) //ca为a矩阵的列数
res[i][j] += a[i][k]*b[k][j];
完整代码如下:
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
int a[110][110],b[110][110],res[110][100];
int ra,rb,ca,cb;
int main(){
cin>>ra>>ca;
for(int i = 1; i<=ra; i++){
for(int j = 1; j<=ca; j++){
cin>>a[i][j];
}
}
cin>>rb>>cb;
for(int i = 1; i<=rb; i++){
for(int j = 1; j<=cb; j++){
cin>>b[i][j];
}
}
if(ca != rb){
cout<<"Error: "<<ca<<" != "<<rb<<endl;
return 0;
}
for(int i = 1; i<=ra; i++) //ra为a矩阵的行数
for(int j = 1; j<=cb; j++) //cb为b矩阵的列数
for(int k = 1; k<=ca; k++) //ca为a矩阵的列数
res[i][j] += a[i][k]*b[k][j];
cout<<ra<<" "<<cb<<endl;
for(int i = 1; i<=ra; i++){
for(int j = 1; j<=cb; j++){
if(j != 1) cout<<" ";
cout<<res[i][j];
}
cout<<endl;
}
return 0;
}