| Run ID | 作者 | 问题 | 语言 | 测评结果 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|
| 87324 | bnu_fanmeijie | 矩阵乘法 | C++ | 通过 | 0 MS | 380 KB | 1505 | 2026-04-15 15:18:15 |
#include <iostream> using namespace std; // 定义最大维度(因n,m,k<100,设105足够) const int MAX = 105; int main() { int n, m, k; // 1. 输入矩阵维度:A(n行m列),B(m行k列) cin >> n >> m >> k; // 定义三个矩阵并初始化(默认值0) int a[MAX][MAX] = {0}; int b[MAX][MAX] = {0}; int c[MAX][MAX] = {0}; // 2. 输入矩阵A(n行m列) for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { cin >> a[i][j]; } } // 3. 输入矩阵B(m行k列) for (int i = 0; i < m; i++) { for (int j = 0; j < k; j++) { cin >> b[i][j]; } } // 4. 核心:计算矩阵C = A × B // 遍历C的每一行i for (int i = 0; i < n; i++) { // 遍历C的每一列j for (int j = 0; j < k; j++) { // 计算C[i][j]:A第i行 与 B第j列 对应相乘求和 for (int p = 0; p < m; p++) { c[i][j] += a[i][p] * b[p][j]; } } } // 5. 输出矩阵C(n行k列) for (int i = 0; i < n; i++) { for (int j = 0; j < k; j++) { // 元素间用空格分隔 cout << c[i][j]; // 不是最后一列,加空格(优化输出格式) if (j != k - 1) { cout << " "; } } // 每行结束换行 cout << endl; } return 0; }