题目链接: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