标签:style blog io ar color os sp for strong
2 1 3 1 2 1 2 3 2 2 3 1 2 3 4 1 0 1 0 1 0 0 0 0
1 2 3 2 4 6 1 2 1 3 4 3
解题思路
这个是考验三重for循环的内部排序问题,思考到底是哪个是外层循环,哪个是内层循环。
代码
#include<stdio.h>
#include<string.h>
int a[60][60],b[60][60],c[60][60];
int main()
{
int m,n,k;
int i,j,d;
while(scanf("%d%d%d",&m,&n,&k),m+n+k)
{
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
scanf("%d",&a[i][j]);
for(i=1;i<=n;i++)
for(j=1;j<=k;j++)
scanf("%d",&b[i][j]);
memset(c,0,sizeof(c));
for(i=1;i<=m;i++)
for(j=1;j<=k;j++)
for(d=1;d<=n;d++)//主要是三重for循环的排序问题
//因为得到的是c[m][k];
//所以m,k,n
c[i][j]+=a[i][d]*b[d][j];
for(i=1;i<=m;i++)
{
for(j=1;j<=k;j++)
{
printf("%d",c[i][j]);
if(j!=k)
printf(" ");
}
printf("\n");
}
}
return 0;
}
例:
矩阵A * B
3 5 1 2 3 4
0 1 * = ??
4 2 5 6 7 8
c(i,j)=a的第i行*b的第j列
得到的是3*4的距阵啊,很简单的算术问题。3*1+5*5=28,得到是是第一行第一列的数值,3*2+5*6=36,得到是是第一行第二列的数值,3*3+5*7=44,得到是是第一行第三列的数值,3*4+5*8=52,得到是是第一行第四列的数值,这是第一行的四个数,。第二行第一列的数值是0*1+1*5=5,第二行第二列的数值是0*2+1*6=6,第二行第三列的数值是0*3+1*7=7,第二行第四列的数值是0*4+1*8=8,这是第二行的四个数值。第三行第一列的数值是4*1+2*5=14,第三行第二列的数值是4*2+2*6=20,第三行第三列的数值是4*3+2*7=26,第三行第四列的数值是4*4+2*8=32,第三行的四个数。得到的结果是
28 36 44 52
5 6 7 8
14 20 26 32
标签:style blog io ar color os sp for strong
原文地址:http://blog.csdn.net/wangluoershixiong/article/details/41516405