【51NOD-0】1137 矩阵乘法
【算法】简单数学
【题解】
对于A*B=C
C中第i行第j列的数字由A中第i行和B中的j列的数字各自相乘后相加得到。
所以两个矩阵能相乘要求A的列数等于B的行数,复杂度为O(n3)。
#include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int maxn=110; int n,a[maxn][maxn],b[maxn][maxn],c[maxn][maxn]; int main() { scanf("%d",&n); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) scanf("%d",&a[i][j]); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) scanf("%d",&b[i][j]); for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { c[i][j]=0; for(int k=1;k<=n;k++)c[i][j]+=a[i][k]*b[k][j]; printf("%d ",c[i][j]); } printf("\n"); } return 0; }