HDU
来源:互联网 发布:网络教育培训机构 编辑:程序博客网 时间:2024/05/21 02:19
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4920
题目大意:求两个方阵的乘积
解题思路:普通的求矩阵乘积,注意乘积过程的优化以及不要乱取模
AC代码:
#include<cstdio>#include<cstring>using namespace std;const int Max = 800 + 5;const int Mod = 3;int bulk;int matrix[Max][Max];int a[Max][Max], b[Max][Max];void multi(int matrix1[][Max], int matrix2[][Max], int _bulk){ for (int i = 1;i <= _bulk;++i) for (int k = 1;k <= _bulk;++k) { if (!matrix1[i][k]) continue;//这里是优化的第一个方阵的0,所对应的第二个方阵的位置都不用去乘了,所以要改变一下j,k的循环位置 for (int j = 1;j <= _bulk;++j) matrix[i][j] += matrix1[i][k] * matrix2[k][j];//这里加几个取模运算也会超时 }}int main(){ for (int n;scanf("%d", &n) == 1;) { for (int i = 1;i <= n;++i) for (int j = 1;j <= n;++j) { scanf("%d", &a[i][j]); a[i][j] %= Mod; matrix[i][j] = 0; } for (int i = 1;i <= n;++i) for (int j = 1;j <= n;++j) { scanf("%d", &b[i][j]); b[i][j] %= Mod; } multi(a, b, n); for (int i = 1;i <= n;++i) { printf("%d", matrix[i][1]%Mod); for (int j = 2;j <= n;++j) printf(" %d", matrix[i][j]%Mod); puts(""); } } return 0;}
阅读全文
0 0
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- Hdu
- hdu
- hdu-
- hdu
- hdu
- hdu
- HDU
- Android一个类似腾讯 QQ 背景图片可以上下左右移动的 imageview
- Apache Kylin权威指南 1.5版本 笔记
- Mysql索引类型
- ubuntu 解决“无法获得锁 /var/lib/dpkg/lock -open (11:资源暂时不可用)”的方法
- weblogic部署war
- HDU
- Caused by: java.lang.ClassNotFoundException: org.hamcrest.SelfDescribing
- 小白入门---HTML5中数据的存储方式
- Linux 文件系统编程之系统调用和标准I/O库
- 最长公共子序列
- HDU-6058 Kanade's sum
- 程序的灵魂----算法(二)
- RMQ算法
- hdu1811(拓扑排序+并查集)