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

 

你可能感兴趣的:(Matrix)