📅  最后修改于: 2023-12-03 14:50:47.280000             🧑  作者: Mango
这是一道关于矩阵的编程题。
给定两个矩阵 $A$ 和 $B$,它们的大小分别为 $m\times n$ 和 $n\times p$,请计算它们的乘积 $C=AB$。
第一行包含三个整数 $m$、$n$ 和 $p$,表示两个矩阵的大小。
接下来 $m$ 行,每行包含 $n$ 个整数,表示矩阵 $A$。
接下来 $n$ 行,每行包含 $p$ 个整数,表示矩阵 $B$。
输出 $m$ 行,每行包含 $p$ 个整数,表示 $C$ 的矩阵元素。
$1\leq m,n,p\leq 100$
输入:
3 2 3
1 2
3 4
5 6
1 2 3
4 5 6
输出:
9 12 15
19 26 33
29 40 51
矩阵乘法是一种基本的数学运算,在计算机科学中有着广泛应用。它的计算公式如下:
$ C_{i,j}=\sum_{k=1}^n A_{i,k}B_{k,j} $
其中,$A$ 为一个大小为 $m\times n$ 的矩阵,$B$ 为一个大小为 $n\times p$ 的矩阵,$C$ 为一个大小为 $m\times p$ 的矩阵,$C_{i,j}$ 表示 $C$ 中第 $i$ 行第 $j$ 列的元素。
# Python3 代码
m, n, p = map(int, input().split())
A = [list(map(int, input().split())) for _ in range(m)]
B = [list(map(int, input().split())) for _ in range(n)]
C = [[0] * p for _ in range(m)]
for i in range(m):
for j in range(p):
for k in range(n):
C[i][j] += A[i][k] * B[k][j]
for i in range(m):
print(' '.join(str(x) for x in C[i]))
// C++ 代码
#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::vector;
int main() {
int m, n, p;
cin >> m >> n >> p;
vector<vector<int> > A(m, vector<int>(n));
for (int i = 0; i < m; ++i) {
for (int j = 0; j < n; ++j) {
cin >> A[i][j];
}
}
vector<vector<int> > B(n, vector<int>(p));
for (int i = 0; i < n; ++i) {
for (int j = 0; j < p; ++j) {
cin >> B[i][j];
}
}
vector<vector<int> > C(m, vector<int>(p));
for (int i = 0; i < m; ++i) {
for (int j = 0; j < p; ++j) {
for (int k = 0; k < n; ++k) {
C[i][j] += A[i][k] * B[k][j];
}
}
}
for (int i = 0; i < m; ++i) {
for (int j = 0; j < p; ++j) {
cout << C[i][j] << " ";
}
cout << "\n";
}
return 0;
}
以上代码分别使用了 Python3 和 C++ 实现了矩阵乘法,读入数据并计算结果的部分都是相同的,只是细节实现有所不同。