矩阵乘法

来源:互联网 发布:matlab数据分析 编辑:程序博客网 时间:2024/06/04 19:02

link:http://acm.hpu.edu.cn/vjudge/problem/viewProblem.action?id=1557
矩阵乘法

Time Limit: 1000MS      Memory Limit: 524288KB      64bit IO Format: %lld & %lld

Description

输入两个矩阵,分别是m*s,s*n大小。输出两个矩阵相乘的结果。

Input

第一行,空格隔开的三个正整数m,s,n(均不超过200)。接下来m行,每行s个空格隔开的整数,表示矩阵A(i,j)。接下来s行,每行n个空格隔开的整数,表示矩阵B(i,j)。

Output

m行,每行n个空格隔开的整数,输出相乘後的矩阵C(i,j)的值。

Sample Input

2 3 21 0 -11 1 -30 31 23 1

Sample Output

-3 2-8 2

题解:矩阵乘法的简单运用,就是把公式程序化,m行s列的矩阵与s行n列的相乘,变成一个m行n列的矩阵
AC代码:

#include<cstdio>#include<iostream>#include<cstdlib>#include<cmath>#include<cstring>#include<algorithm>using namespace std;long long a[200][200],b[200][200],c[200][200];int main(){    int m,n,s,i,j,x,y;    scanf("%d%d%d",&m,&s,&n);    for(i=0;i<m;i++)        for(j=0;j<s;j++)            scanf("%lld",&a[i][j]);    for(i=0;i<s;i++)        for(j=0;j<n;j++)            scanf("%lld",&b[i][j]);    for(i=0;i<m;i++)    {        for(j=0;j<n;j++)        {            c[i][j]=0;            for(x=0;x<s;x++)            {                    c[i][j]+=a[i][x]*b[x][j];            }            printf("%d",c[i][j]);            if(j!=(n-1))                printf(" ");            else                printf("\n");        }    }    return 0;}
原创粉丝点击