标签: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