题目地址


基本思路:

易错点:

  • 应确认好元素乘法顺序.

 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 }