2020牛客国庆集训派对day2 E

MATRIX MULTIPLICATION CALCULATOR

https://ac.nowcoder.com/acm/contest/7818/E

题意

求两个矩阵的乘法。

分析

我们其实只需要知道矩阵乘法要求两个矩阵,第一个的大小为 ,第二个的大小为 。那么 才能进行乘法。而乘法的计算方式就在题面上。

代码

#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;
            }
        }
    }
}
比赛题解 文章被收录于专栏

近期比赛的题解应该有吧。。。

全部评论

相关推荐

昨天 14:22
门头沟学院 Java
大厂 测开 24*16离家近的事业编(大概只有大厂的1/4) 硕士
点赞 评论 收藏
分享
重生2012之我是java程序员:换个稍微正式点的照片吧
点赞 评论 收藏
分享
4 收藏 评论
分享
牛客网
牛客企业服务