题目链接

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

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

 //
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>
#include <iostream> using namespace std ; int a[][],b[][],c[][] ;
int d[],c1[],d1[],ans[] ; int main()
{
int n ;
while(~scanf("%d",&n))
{
for(int i = ; i < n ; i++)
for(int j = ; j < n ; j++)
scanf("%d",&a[i][j]) ;
for(int i = ; i < n ; i++)
for(int j = ; j < n ; j++)
scanf("%d",&b[i][j]) ;
for(int i = ; i < n ; i++)
for(int j = ; j < n ; j++)
scanf("%d",&c[i][j]) ;
srand((unsigned int)time());
for(int i=; i<n; i++)
{
d[i]=rand()%;
}
for(int i = ; i < n ; i++)
for(int j = ; j < n ; j++)
{
d1[i] += b[i][j]*d[j] ;//二维乘一维等于一维,一维乘二维等于二维
c1[i] += c[i][j]*d[j] ;
}
for(int i = ; i < n ; i++)
for(int j = ; j < n ; j++)
ans[i] += a[i][j]*d1[j] ;
bool flag = false ;
for(int i = ; i < n ; i++)
if(ans[i] != c1[i])
{
flag = true ;
break ;
}
if(!flag)
printf("YES\n") ;
else printf("NO\n") ;
}
return ;
}

POJ 3318 Matrix Multiplication(矩阵乘法)的更多相关文章

  1. Poj 3318 Matrix Multiplication( 矩阵压缩)

    Matrix Multiplication Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 18928   Accepted: ...

  2. 数学(矩阵乘法,随机化算法):POJ 3318 Matrix Multiplication

    Matrix Multiplication Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 17783   Accepted: ...

  3. poj 3318 Matrix Multiplication 随机化算法

    方法1:暴力法 矩阵乘法+优化可以卡时间过的. 方法2:随机化 随机构造向量x[1..n],则有xAB=xC;这样可以将小运算至O(n^2). 代码如下: #include<iostream&g ...

  4. [poj 3318] Matrix Multiplication (随机化+矩阵)

    Description You are given three n × n matrices A, B and C. Does the equation A × B = C hold true? In ...

  5. poj 3318 Matrix Multiplication

    http://poj.org/problem?id=3318 矩阵A*矩阵B是否等于矩阵C #include <cstdio> #include <cstring> #incl ...

  6. POJ 3318 Matrix Multiplication(随机算法)

    题目链接 随机算法使劲水...srand((unsigned)time(0))比srand(NULL)靠谱很多,可能是更加随机. #include <cstdio> #include &l ...

  7. POJ 3318 - Matrix Multiplication 第一次用随机化解决问题...

    随机化还是很厉害的...印象最深的是以前手写快排~~一般加个随机化会使耗时不受输入数据的..时间更加稳定 这个题是人品题了...开始交了好多遍都过不了..多交几次终于过了... Program: #i ...

  8. HDU 4920 Matrix multiplication(矩阵相乘)

    各种TEL,233啊.没想到是处理掉0的情况就能够过啊.一直以为会有极端数据.没想到居然是这种啊..在网上看到了一个AC的奇妙的代码,经典的矩阵乘法,仅仅只是把最内层的枚举,移到外面就过了啊...有点 ...

  9. PKU 3318 Matrix Multiplication(随机化算法||状态压缩)

    题目大意:原题链接 给定三个n*n的矩阵A,B,C,验证A*B=C是否成立. 所有解法中因为只测试一组数据,因此没有使用memset清零 Hint中给的傻乎乎的TLE版本: #include<c ...

随机推荐

  1. Linux设备驱动01

    准备: 1.英语-是工具 2.电路原理图-补充“数电”的知识 3.阅读内核代码的能力 linux:vi+ctags+cscope windows:source insight 驱动开发的步骤 I.编辑 ...

  2. C语言成绩测试 ,水仙花数,打印星图

    #include <stdio.h>//输入输出头文件 #include<string.h> #include<stdlib.h> //局部被调用函数1 成绩检测 ...

  3. 而在Jquery中则使用$.map()、$.each()来操作数组

    首先是普通的数组(索引为整数的数组): //$.map(arr,fn); //对数组中的每个元素调用fn函数逐个进行处理,fn函数将处理返回最后得到的一个新的数组 var arr = [9, 8, 7 ...

  4. LINQ to XML(1)

    LINQ to XML可以两种方式和XML配合使用.第一种方式是作为简化的XML操作API,第二种方式是使用LINQ查询工具.下面我使用的是第二种方式. 主要内容:用LINQ查询语句对XML文件里的数 ...

  5. 关于Silverlight调用天气预报接口问题

    问题:因Silverlight客户端不能直接调用webservice接口(外网天气接口),调用会出现跨域访问的问题,即使添加了跨域文件也不好使.解决方法如下 解决方法一:1.在服务端建立一个wcf服务 ...

  6. Jquery操作Cookie取值错误的解决方法

    使用JQuery操作cookie时 发生取的值不正确,结果发现cookie有四个不同的属性,分享下错误的原因及解决方法. 使用JQuery操作cookie时 发生取的值不正确的问题:  结果发现coo ...

  7. CSS3 animation小动画

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  8. cookie工作原理

    当客户访问某个基于PHP技术的网站时,在PHP中可以使用setcookie()函数生成一个cookie,系统经处理把这个cookie发送到客户端并保存在C:\Documents andSettings ...

  9. mysql命令语句来去除掉字段中空格字符的方法

    mysql有什么办法批量去掉某个字段字符中的空格?不仅是字符串前后的空格,还包含字符串中间的空格,答案是 replace,使用mysql自带的 replace 函数,另外还有个 trim 函数.   ...

  10. ros-Qt代码环境的搭建

    1 建立package catkin_create_pkg beginner_tutorials roscpp 2 导入Qt Qt中打开整个工作空间的src/CMakeLists.txt 在倒数第二行 ...