标签:
矩阵乘法就三个for循环而已,没什么说的。不过此题好坑,要小心,如何坑的,请看代码。
1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 int n,a[804][804],b[804][804],c[804][804]; 5 int main() 6 { 7 int i,j,k; 8 while (~scanf("%d",&n)) 9 { 10 for (i=1;i<=n;i++) 11 for (j=1;j<=n;j++) c[i][j]=0; 12 for (i=1;i<=n;i++) 13 for (j=1;j<=n;j++) 14 { 15 scanf("%d",&a[i][j]); 16 a[i][j]%=3;//每输入都要%3,让数据变小,下面才可不%3。 17 } 18 for (i=1;i<=n;i++) 19 for (j=1;j<=n;j++) 20 { 21 scanf("%d",&b[i][j]); 22 b[i][j]%=3; 23 } 24 for (k=1;k<=n;k++) //这个循环不能换在j循环下面,不然会超时。什么原因暂时不清楚。 25 for (i=1;i<=n;i++) 26 for (j=1;j<=n;j++) 27 c[i][j]+=a[i][k]*b[k][j]; //这里不能%3,不然会超时,因为多算了一步。 28 for (i=1;i<=n;i++) 29 { 30 for (j=1;j<n;j++) 31 printf("%d ",c[i][j]%3); 32 printf("%d\n",c[i][j]%3); 33 } 34 } 35 return 0; 36 }
hdu 4920 Matrix multiplication (矩阵乘法)
标签:
原文地址:http://www.cnblogs.com/pblr/p/4738024.html