矩阵乘法

来源:互联网 发布:gps pf11导航仪端口 编辑:程序博客网 时间:2024/05/29 19:53

给出n*n的矩阵A,B,C,问是否有A*B=C。

e=da;

f=dab;

e=dc;

#include<string.h>#include<cstdio>#include<algorithm>#include<cstdlib>using namespace std;const int maxn=501;int a[maxn][maxn],b[maxn][maxn],c[maxn][maxn];int d[maxn][maxn],e[maxn][maxn],f[maxn][maxn];int n;void mul(int a[maxn][maxn],int b[maxn][maxn],int c[maxn][maxn],int n1,int m1,int n2,int m2){int i,j,k;for(i=0;i<n1;i++){for(j=0;j<m2;j++){c[i][j]=0;for(k=0;k<m1;k++){c[i][j]+=a[i][k]*b[k][j];c[i][j]%=2;}}}}int  main(){int i,j,k,t;char s[1001];scanf("%d",&t);while(t--){scanf("%d",&n);for(i=0;i<n;i++){scanf("%s",s);for(j=0;j<n;j++)a[i][j]=s[j]-'0';}for(i=0;i<n;i++){scanf("%s",s);for(j=0;j<n;j++)b[i][j]=s[j]-'0';}for(i=0;i<n;i++){scanf("%s",s);for(j=0;j<n;j++)c[i][j]=s[j]-'0';}int t=10;bool ok=true;while(t--){for(i=0;i<n;i++)d[0][i]=rand()%2;mul(d,a,e,1,n,n,n);mul(e,b,f,1,n,n,n);mul(d,c,e,1,n,n,n);for(i=0;i<n;i++)if(e[0][i]!=f[0][i])ok=false;}if(ok)printf("YES\n");else printf("NO\n");}return 0;}


原创粉丝点击