问题 J: 零基础学C/C++125——矩阵乘积
题目描述
输入一个m×n的整数矩阵A,再输入一个n×m的整数矩阵B。计算C=A×B。
输入
输入为多组测试数据。
先输入m和n(m和n均≤10),另起一行后输入一个m×n的整数矩阵A,然后再输入一个n×m的整数矩阵B。每列数据用空格分隔,每行数据用回车分隔。
输出
计算A×B→C,输出矩阵C。
样例输入 >Copy
2 3
1 2 3
2 4 6
1 2
3 4
5 6
样例输出 >Copy
22 28
44 56
提示
C=A×B,C是一个M×M的矩阵。
题解
矩阵乘积,由于m*n与n*m相乘,所以矩阵为m*m形
纯粹的数学知识,唯一一个小坑就是每组的c要清0(多组输入)
代码(AC)
点击查看代码
#include<stdio.h>
const int N = 70;
int a[N][N],b[N][N],c[N][N];
int main()
{
int m,n;
while(scanf("%d%d",&m,&n)!=EOF)
{
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
scanf("%d",&b[i][j]);
}
}
for(int i=0;i<m;i++)
{
for(int j=0;j<m;j++)
{
c[i][j]=0;
for(int k=0;k<n;k++)
{
c[i][j]+=a[i][k]*b[k][j];
}
}
}
for(int i=0;i<m;i++)
{
for(int j=0;j<m;j++)
{
printf("%d",c[i][j]);
if(j!=m-1) printf(" ");
else printf("\n");
}
}
}
return 0;
}