NYOJ 623 A*B(2)(矩阵相乘)

来源:互联网 发布:淘宝店铺规则 编辑:程序博客网 时间:2024/06/08 23:10
描述
ACM的C++同学有好多作业要做,最头痛莫过于线性代数了,因为每次做到矩阵相乘的时候,大量的乘法都会把他搞乱,所以他想请你写个程序帮他检验一下计算结果是否正确。
输入
有多组测试数据,每行给出一组m,n,k(0<m,n,k<=50)。m,n,k表示两个矩阵的大小,其中:
矩阵A:m行n列。
矩阵B:n行k列。
接下来给出m*n个数表示矩阵A和n*k个数表示矩阵B,对于每个数s,0<=s<=1000。
当m,n,k同时为0时结束。
输出
计算两个矩阵的乘积并输出。
样例输入
2 1 3121 2 32 2 31 23 41 0 10 1 00 0 0
样例输出
1 2 32 4 61 2 13 4 3 

ac代码: 
#include<stdio.h>int main(){    int a[55][55],b[55][55];    int n,m,k,i,j,d;    while((scanf("%d%d%d",&n,&m,&k)!=EOF)&&(n||m||k))    {        int c[55][55]={0};//不能少,否则wa       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++)       for(d=0;d<m;d++)       c[i][j]+=a[i][d]*b[d][j];       for(i=0;i<n;i++)       {           for(j=0;j<k;j++)           printf("%d ",c[i][j]);           printf("\n");       }    }    return 0;} 



0 0
原创粉丝点击