首页 > 代码库 > Hdu 4920矩阵乘法(内存访问的讲究)
Hdu 4920矩阵乘法(内存访问的讲究)
题目链接
Matrix multiplication
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 2143 Accepted Submission(s): 967Problem DescriptionGiven two matrices A and B of size n×n, find the product of them.
bobo hates big integers. So you are only asked to find the result modulo 3.
InputThe input consists of several tests. For each tests:
The first line contains n (1≤n≤800). Each of the following n lines contain n integers -- the description of the matrix A. The j-th integer in the i-th line equals Aij. The next n lines describe the matrix B in similar format (0≤Aij,Bij≤109).
OutputFor each tests:
Print n lines. Each of them contain n integers -- the matrix A×B in similar format.
Sample Input10120 12 34 56 7Sample Output00 12 1
请看完这篇博文,看完就去AC吧。加了输入优化,效果并不明显。
Accepted Code:
1 /************************************************************************* 2 > File Name: 1010.cpp 3 > Author: Stomach_ache 4 > Mail: sudaweitong@gmail.com 5 > Created Time: 2014年08月05日 星期二 19时22分23秒 6 > Propose: 7 ************************************************************************/ 8 9 #include <cmath>10 #include <string>11 #include <cstdio>12 #include <fstream>13 #include <cstring>14 #include <iostream>15 #include <algorithm>16 using namespace std;17 18 int n;19 int a[802][802], b[802][802], c[802][802];20 21 int read() {22 int res = 0;23 char c = ‘ ‘;24 while (c < ‘0‘ || c > ‘9‘) c = getchar();25 while (c >= ‘0‘ && c <= ‘9‘) res += c - ‘0‘, c = getchar();26 return res%3;27 }28 29 int main(void) {30 while (~scanf("%d", &n)) {31 for (int i = 0; i < n; i++) 32 for (int j = 0; j < n; j++)33 a[i][j] = read();34 for (int i = 0; i < n; i++)35 for (int j = 0; j < n; j++)36 b[i][j] = read();37 memset(c, 0, sizeof(c));38 for (int i = 0; i < n; i++) {39 for (int k = 0; k < n; k++) {40 for (int j = 0; j < n; j++) {41 c[i][j] += a[i][k] * b[k][j]; //注意这里的循环顺序42 }43 }44 }45 for (int i = 0; i < n; i++) 46 for (int j = 0; j < n; j++)47 printf("%d%c", c[i][j]%3, j == n-1 ? ‘\n‘ : ‘ ‘);48 }49 return 0;50 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。