矩阵乘法

矩阵乘法

题目要求:

给定一个 m 行、n 列的矩阵 A 和一个 n 行、m 列的矩阵 B。需要用矩阵 A 与矩阵 B 相乘,并且将 m 行 m 列的乘积结果输出。

输入格式:

测评机会反复运行你写的程序。每次程序运行时,首先在第一行输入2 个整数,分别对应题目描述中的 m 和 n(1≤m, n≤10),两个整数之间用一个空格分隔。接下来 m 行,每行包含 n 个整数,每两个整数之间用一个空格分隔。对应 m 行 n 列的矩阵A。再接下来 n 行,每行包含 m 个整数,每两个整数之间用一个空格分隔。对应 n 行 m 列的矩阵 B。
注:矩阵中的整数均大于等于−100,小于等于100。

输出格式:

输出包括 m 行,每行包含 m 个整数,对应矩阵 A 乘矩阵 B 的结果。每两个整数之间一个空格,每行最后一个整数后面没有空格。

样例输入:

2 2
2 3
3 1
3 2
4 3

样例输出:

18 13
13 9

解题思路:

按照矩阵乘法的规则进行计算。

代码编写:

#include <stdio.h>

int main() {
    int m, n;
    scanf("%d %d", &m, &n);
    int matrix_a[m][n];
    int matrix_b[n][m];
    for(int i = 0; i < m; i++) {
        for(int j = 0; j < n; j++) {
            scanf("%d", &matrix_a[i][j]);
        }
    }
    for(int i = 0; i < n; i++) {
        for(int j = 0; j < m; j++) {
            scanf("%d", &matrix_b[i][j]);
        }
    }

    for(int i = 0; i < m; i++) {
        for(int j = 0; j < m; j++) {
            int sum = 0;
            for(int k = 0; k < n; k++) {
                sum += matrix_a[i][k] * matrix_b[k][j];
            }
            printf("%d", sum);
            if(j != m - 1) printf(" ");
        }
        printf("\n");
    }
    
    return 0;
}

版权声明:本文为qq_40644809原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。