两个矩阵相乘 (n,m,k为小于50的正整数)
Time Limit:1000MS Memory Limit:65536K
Total Submit:247 Accepted:96
Description
大家都会手算两个矩阵相乘吧,是不是感觉很简单但是很麻烦啊!
其实这种工作就应该就给计算机做,那么我们开始吧!
现在就开始做一劳永逸的事情吧!
Input
输入有多组例子:
开始一个整数T表示有T组测试数据
每组测试数据以三个整数开始。n,m,k表示两个nXm,mXk的矩阵的行和列
接下来是两个满足要求的整数矩阵,每行的每个数字后有一个空格,详细看样例。
Output
每组例子输出结果矩阵nXk,和输入的矩阵同要求。
每组例子后面一个空行(保证结果不超出int类型的范围)
Sample Input
2 1 2 3 1 2 1 2 3 1 2 3 1 1 1 1 2
Sample Output
3 6 9 2
Hint
每行的每个数字后有一个空格
#include<stdio.h>
int a[109][109],b[109][109],c[109][109];
int main()
{
int t,n,m,k,i,j,l;
scanf("%d",&t);
while(t--)
{
scanf("%d%d%d",&n,&m,&k);
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d",&a[i][j]);
for(i=0;i<m;i++)
for(j=0;j<k;j++)
scanf("%d",&b[i][j]);
for(i=0;i<n;i++)
for(j=0;j<k;j++)
{
c[i][j]=0;
for(l=0;l<k;l++)
c[i][j]+=a[i][l]*b[l][j];
}
for(i=0;i<n;i++)
{
for(j=0;j<k;j++)
printf("%d ",c[i][j]);
printf("\n");
}
printf("\n");
}
return 0;
}