题解 AT195 【A mul B Problem】

· · 题解

前置知识:矩阵乘法

对于矩阵大小分别为n\timesn的矩阵AB和用来保存矩阵乘法运算结果的大小为n\timesn的矩阵C ,我们规定:

c[i][j]=\sum_{k=1}^na[i][k]\times b[k][j]=a[i][1]\times b[1][j]+...+a[i][n]\times b[n][j]

所以,我们只需在进行运算之后对矩阵进行判断即可

AC代码

#include<iostream>
#include<cmath>
#include<algorithm>
#include<string>
#include<cstdio>
#include<iomanip>
#include<map>
#include<cstring>
using namespace std;
int n,a[1005][1005],b[1005][1005],c[1005][1005],d[1005][1005];
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) scanf("%d",&a[i][j]);
    for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) scanf("%d",&b[i][j]);
    for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) scanf("%d",&c[i][j]);
    for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) for(int k=1;k<=n;k++) d[i][j]+=a[i][k]*b[k][j];//矩阵乘法的定义
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            if(c[i][j]-d[i][j])
            {
                puts("NO");//一个不符合就no
                return 0;
            }
    puts("YES");
    return 0;//记得换行!
}