【codevs 1287】 矩阵乘法

来源:互联网 发布:开过淘宝店铺能注销吗 编辑:程序博客网 时间:2024/05/22 06:08

这道题是矩阵乘法的裸题,但是我这个蒟蒻还是花了几乎一晚上才A。一开始我定义了(ai * aj)(bi * bj)的矩阵,绕着绕着就绕晕了。
之后问了ilern(ilern的链接),定义了(m * p)(p * n)的矩阵,第一层循环m,第二层循环n,第三层循环p,答案矩阵是(m * n)的,很容易就写出来了 。

#include <cstdio>const int maxn = 205;int a[maxn][maxn], b[maxn][maxn];long long c[maxn][maxn];int main(){    int n, m, p;    scanf("%d %d", &m, &p);    for (int i = 0; i < m; i++)    {        for (int j = 0; j < p; j++)        {            scanf("%d", &a[i][j]);        }    }    scanf("%d %d", &p, &n);    for (int i = 0; i < p; i++)    {        for (int j = 0; j < n; j++)        {            scanf("%d", &b[i][j]);        }    }    for (int i = 0; i < m; i++)    {        for (int j = 0; j < n; j++)        {            for (int k = 0; k < p; k++)            {                c[i][j] += a[i][k] * b[k][j];            }        }    }    for (int i = 0; i < m; i++)    {        for (int j = 0; j < n; j++)        {            printf("%lld ", c[i][j]);        }        printf("\n");    }    return 0;}

另外矩阵乘法的定义矩阵A的第一行乘矩阵B的第一列,得到矩阵C的第一行第一个数,接着A的第一行乘B的第二列,得C的第一行第二个数。一开始我连定义都没搞明白就开始写题,以为自己怪能。

0 0
原创粉丝点击