3318 Matrix Multiplication 随机算法
来源:互联网 发布:java搭建博客系统 编辑:程序博客网 时间:2024/06/06 11:04
题意:给出n阶方阵A,B和C,判断C是否为A和B的乘积。
方阵规模最大为500×500,若直接将A和B相乘,算法复杂度为O(n^3),肯定要超时。考虑采用随机算法,随机选取50000个项进行测试。
用马甲测试了一下,一次AC:3216K 1594MS,大号提交WA了3次……
代码如下:
- #include <iostream>
- #include <cstdlib>
- #include <ctime>
- using namespace std;
- int A[500][500], B[500][500];
- long C[500][500];
- int main()
- {
- srand( (unsigned)time(NULL) );
- int k, j, n;
- int r, c;
- int sum, flag;
- cin >> n;
- for (k = 0; k < n; ++k)
- {
- for (j = 0; j < n; ++j)
- {
- scanf("%d", &A[k][j]);
- }
- }
- for (k = 0; k < n; ++k)
- {
- for (j = 0; j < n; ++j)
- {
- scanf("%d", &B[k][j]);
- }
- }
- for (k = 0; k < n; ++k)
- {
- for (j = 0; j < n; ++j)
- {
- scanf("%d", &C[k][j]);
- }
- }
- flag = 0;
- for (j = 0; j < 50000; ++j)
- {
- r = rand() % n;
- c = rand() % n;
- sum = 0;
- for (k = 0; k < n; ++k)
- {
- sum += A[r][k] * B[k][c];
- }
- if (sum != C[r][c])
- {
- flag = 1;
- break;
- }
- }
- if (flag == 0)
- {
- cout << "YES" << endl;
- }
- else
- {
- cout << "NO" << endl;
- }
- return 0;
- }
- 3318 Matrix Multiplication 随机算法
- POJ 3318 Matrix Multiplication(随机算法)
- POJ 3318 Matrix Multiplication 随机
- 【POJ 3318】Matrix Multiplication(随机<RP>……算法?)
- poj3318--Matrix Multiplication(随机算法)
- POJ 3318 Matrix Multiplication(随机化算法)
- POJ 3318 Matrix Multiplication 随机化算法
- 【POJ-3318-Matrix Multiplication 随机化算法】
- POJ 3318 Matrix Multiplication
- Poj 3318 Matrix Multiplication
- POJ 3318 Matrix Multiplication
- [ACM] POJ 3318 Matrix Multiplication (随机化算法)
- POJ---3318-Matrix Multiplication 水
- POJ 3338 Matrix Multiplication(随机化算法)
- Matrix Multiplication
- Matrix Multiplication
- Matrix Multiplication
- Matrix Multiplication
- 从小狗那儿学到的18件事
- 2008年11月18号,星期二 晴。
- about delphi7 开发环境使用
- 函数前面的const和函数后面的const解释
- Java堆和栈的区别
- 3318 Matrix Multiplication 随机算法
- oracle10g主机身份证明错误的解决办法
- 对开发人员的 Windows SharePoint Services V3 和 SharePoint Server 2007 工作流简介
- 一个女孩写给女孩的话-不管是男是女看看吧,看看我们做了里面的多少
- sc 服务
- Java Thesis
- xp cmd
- JAVA学习【知】多态
- Java thesis 续