题意
求两个矩阵的乘法。
分析
我们其实只需要知道矩阵乘法要求两个矩阵,第一个的大小为 ,第二个的大小为
。那么
才能进行乘法。而乘法的计算方式就在题面上。
代码
#include<bits/stdc++.h>
using namespace std;
const int N = 40;
#define LL long long
const int inf = 0x3f3f3f3f;
int read() {
int x = 0,f = 0;char ch = getchar();
while(!isdigit(ch)) {if(ch=='-')f=1;ch = getchar();}
while(isdigit(ch)) {x = x * 10 + ch - '0';ch = getchar();}
return f?-x:x;
}
int a[N][N],b[N][N],c[N][N],Case,num;
int main() {
while(1){
int n=read(),m=read(),u=read(),d=read();
if(!n&&!m&&!u&&!d)return 0;cout<<"Case #"<<++num<<":"<<endl;
for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)a[i][j]=read();
for(int i=1;i<=u;i++)for(int j=1;j<=d;j++)b[i][j]=read();
if(m!=u){cout<<"undefined"<<endl;continue;}
else {
for(int i=1;i<=n;i++)for(int j=1;j<=d;j++)c[i][j]=0;
for(int i=1;i<=n;i++)for(int j=1;j<=d;j++)for(int k=1;k<=m;k++)
c[i][j]=(c[i][j]+a[i][k]*b[k][j]);
for(int i=1;i<=n;i++){
cout<<"| ";
for(int j=1;j<=d;j++)cout<<c[i][j]<<" ";
cout<<"|"<<endl;
}
}
}
}
京公网安备 11010502036488号