zoukankan      html  css  js  c++  java
  • POJ 3318 Matrix Multiplication(矩阵乘法)

    题目链接

    题意 : 给你三个n维矩阵,让你判断A*B是否等于C。

    思路 :优化将二维转化成一维的。随机生成一个一维向量d,使得A*(B*d)=C*d,多次生成多次测试即可使错误概率大大减小。

     1 //3318
     2 #include <stdio.h>
     3 #include <string.h>
     4 #include <time.h>
     5 #include <stdlib.h>
     6 #include <iostream>
     7 
     8 using namespace std ;
     9 
    10 int a[1010][1010],b[1010][1010],c[1010][1010] ;
    11 int d[1010],c1[1010],d1[1010],ans[1010] ;
    12 
    13 int main()
    14 {
    15     int n ;
    16     while(~scanf("%d",&n))
    17     {
    18         for(int i = 0 ; i < n ; i++)
    19             for(int j = 0 ; j < n ; j++)
    20                 scanf("%d",&a[i][j]) ;
    21         for(int i = 0 ; i < n ; i++)
    22             for(int j = 0 ; j < n ; j++)
    23                 scanf("%d",&b[i][j]) ;
    24         for(int i = 0 ; i < n ; i++)
    25             for(int j = 0 ; j < n ; j++)
    26                 scanf("%d",&c[i][j]) ;
    27         srand((unsigned int)time(0));
    28         for(int i=0; i<n; i++)
    29         {
    30             d[i]=rand()%100;
    31         }
    32         for(int i = 0 ; i < n ; i++)
    33             for(int j = 0 ; j < n ; j++)
    34             {
    35                 d1[i] += b[i][j]*d[j] ;//二维乘一维等于一维,一维乘二维等于二维
    36                 c1[i] += c[i][j]*d[j] ;
    37             }
    38         for(int i = 0 ; i < n ; i++)
    39             for(int j = 0 ; j < n ; j++)
    40                 ans[i] += a[i][j]*d1[j] ;
    41         bool flag = false ;
    42         for(int i = 0 ;  i < n ; i++)
    43             if(ans[i] != c1[i])
    44             {
    45                 flag = true ;
    46                 break ;
    47             }
    48         if(!flag)
    49             printf("YES
    ") ;
    50         else printf("NO
    ") ;
    51     }
    52     return 0 ;
    53 }
    View Code
  • 相关阅读:
    C语言的存储类别和动态内存分配
    C语言中复杂的声明
    C语言中typedef的解释_2
    C语言中类型限定符
    C语言文件I/O和标准I/O函数
    C语言中存储类别、链接与内存管理
    C++中static与const成员
    C++多态、虚函数、纯虚函数、抽象类
    sizeof结构体
    杂类
  • 原文地址:https://www.cnblogs.com/luyingfeng/p/3797759.html
Copyright © 2011-2022 走看看