L1-048 矩阵A乘以B (15 分)


记录这道题的原因很简单,我有时候会忘记矩阵怎么相乘......

上题:https://pintia.cn/problem-sets/994805046380707840/problems/994805082313310208

分析:矩阵A * 矩阵B的结果矩阵C, 有 C[i][j] += A[i][k] * B[k][j] 其中k为矩阵A的列,矩阵B的行 手动模拟一遍~

贴上代码:

#include 
using namespace std;
int A[1010][1010], B[1010][1010], c[1010][1010];
int main()
{
    int m, n, mm, nn;
    cin >> m >> n;
    for(int i = 1; i <= m; i++)
    {
        for(int j = 1; j <= n; j++)
        cin >> A[i][j];
    }
    cin >> mm >> nn;
    for(int i = 1; i <= mm; i++)
    {
        for(int j = 1; j <= nn; j++)
        cin >> B[i][j];
    }
    if(n != mm) printf("Error: %d != %d", n, mm);
    else
    {
        cout << m << ' ' << nn << endl;
        for(int i = 1; i <= m; i++)
        {
            for(int j = 1; j <= nn; j++)
            {
                for(int k = 1; k <= mm; k++)
                c[i][j] += A[i][k] * B[k][j];
                if(j!=nn) cout << c[i][j] << ' ';
                else cout << c[i][j] << endl;
            }
        }
    }
    return 0;
}