题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4920
1 0 1 2 0 1 2 3 4 5 6 7
0 0 1 2 1
代码如下:
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int MAXN = 801; const int mod = 3; int A[MAXN][MAXN], B[MAXN][MAXN]; int C[MAXN][MAXN]; int n; void input() { int i, j; for(i = 1; i <= n; i++) { for(j = 1; j <= n; j++) { scanf("%d",&A[i][j]); A[i][j] %= mod; } } for(i = 1; i <= n; i++) { for(j = 1; j <= n; j++) { scanf("%d",&B[i][j]); B[i][j] %= mod; } } } void multi() {//两个相等矩阵的乘法,对于稀疏矩阵,有在0处不用运算的优化 memset(C,0,sizeof(C)); for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++) { if(A[i][j] == 0)//稀疏矩阵优化 continue; for(int k = 1; k <= n; k++) { C[i][k] += A[i][j]*B[j][k];//i行k列第j项 // C[i][k] %= mod; } } } } void print()//输出矩阵信息 { for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++) { if(j == 1) printf("%d",C[i][j]%mod); else printf(" %d",C[i][j]%mod); } printf("\n"); } } int main() { while(~scanf("%d",&n)) { input(); multi(); print(); } return 0; }
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int MAXN = 817; const int mod = 3; int A[MAXN][MAXN], B[MAXN][MAXN]; int C[MAXN][MAXN]; int n; int Scan() { int res = 0, ch; ch=getchar(); if(ch >= '0' && ch <= '9') res = ch - '0'; while((ch = getchar()) >= '0' && ch <= '9' ) res = res * 10 + ch - '0'; return res; } void input() { int i, j; for(i = 1; i <= n; i++) { for(j = 1; j <= n; j++) { //scanf("%d",&A[i][j]); //A[i][j] %= mod; A[i][j]=Scan()%3; } } for(i = 1; i <= n; i++) { for(j = 1; j <= n; j++) { //scanf("%d",&B[i][j]); //B[i][j] %= mod; B[i][j]=Scan()%3; } } } void multi() {//两个相等矩阵的乘法,对于稀疏矩阵,有在0处不用运算的优化 memset(C,0,sizeof(C)); for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++) { if(A[i][j] == 0)//稀疏矩阵优化 continue; for(int k = 1; k <= n; k++) { C[i][k] += A[i][j]*B[j][k];//i行k列第j项 // C[i][k] %= mod; } } } } void print()//输出矩阵信息 { for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++) { if(j == 1) printf("%d",C[i][j]%mod); else printf(" %d",C[i][j]%mod); } printf("\n"); } } int main() { while(~scanf("%d",&n)) { input(); multi(); print(); } return 0; }
hdu 4920 Matrix multiplication(矩阵乘法),布布扣,bubuko.com
hdu 4920 Matrix multiplication(矩阵乘法)
原文地址:http://blog.csdn.net/u012860063/article/details/38390787