易错点:
- 应确认好元素乘法顺序.
1 #include<cstdio> 2 #include<iostream> 3 using namespace std; 4 const int MAXX=2e2,MAXY=2e2; 5 struct Mat{ 6 int x,y; 7 int a[MAXX][MAXY]; 8 }; 9 Mat mull(Mat a,Mat b){ 10 Mat c; 11 c.x=b.x,c.y=a.y; 12 for(int i=1;i<=c.x;i++){ 13 for(int j=1;j<=c.y;j++){ 14 for(int k=1;k<=a.x;k++) 15 c.a[j][i]=c.a[j][i]+a.a[j][k]*b.a[k][i]; 16 } 17 } 18 return c; 19 } 20 int main(){ 21 int x1,y1,x2,y2; 22 scanf("%d%d%d%d",&x1,&y1,&x2,&y2); 23 Mat a,b; 24 a.x=x1,a.y=y1,b.x=x2,b.y=y2; 25 for(int j=1;j<=y1;j++){ 26 for(int i=1;i<=x1;i++){ 27 scanf("%d",&a.a[j][i]); 28 } 29 } 30 for(int j=1;j<=y2;j++){// 31 for(int i=1;i<=x2;i++){ 32 scanf("%d",&b.a[j][i]); 33 } 34 } 35 Mat ans=mull(a,b); 36 for(int i=1;i<=ans.y;i++){ 37 for(int j=1;j<=ans.x;j++){ 38 printf("%d ",ans.a[i][j]); 39 } 40 printf("\n"); 41 } 42 return 0; 43 }