首页 > 代码库 > poj 3318 Matrix Multiplication

poj 3318 Matrix Multiplication

http://poj.org/problem?id=3318

矩阵A*矩阵B是否等于矩阵C

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <time.h>
 4 #include <algorithm>
 5 #define maxn 1010
 6 using namespace std;
 7 
 8 int a[maxn][maxn],b[maxn][maxn],c[maxn][maxn],d[maxn];
 9 int n;
10 int b1[maxn],c1[maxn],a1[maxn];
11 
12 int main()
13 {
14     while(scanf("%d",&n)!=EOF)
15     {
16         for(int i=0; i<n; i++)
17         {
18             for(int j=0; j<n; j++)
19             scanf("%d",&a[i][j]);
20         }
21         for(int i=0; i<n; i++)
22         {
23             for(int j=0; j<n; j++)
24             {
25                 scanf("%d",&b[i][j]);
26             }
27         }
28         for(int i=0; i<n; i++)
29         {
30             for(int j=0; j<n; j++)
31             {
32                 scanf("%d",&c[i][j]);
33             }
34         }
35         srand((unsigned int)time(0));
36         for(int i=0; i<n; i++)
37         {
38             d[i]=rand()%100;
39         }
40         for(int i=0; i<n; i++)
41         {
42             for(int j=0; j<n; j++)
43             {
44                 b1[i]+=b[i][j]*d[j];
45                 c1[i]+=c[i][j]*d[j];
46             }
47         }
48         for(int i=0; i<n; i++)
49         {
50             for(int j=0; j<n; j++)
51             {
52                 a1[i]+=a[i][j]*b1[j];
53             }
54         }
55         bool flag=false;
56         for(int i=0; i<n; i++)
57         {
58             if(a1[i]!=c1[i])
59             {
60                 flag=true;
61                 break;
62             }
63         }
64         if(!flag) printf("YES\n");
65         else printf("NO\n");
66     }
67     return 0;
68 }
View Code