Python 实现:二维矩阵相乘的输入输出、代码解析与复杂度分析
以下是使用 Python 实现矩阵相乘的代码: ```python # 读取矩阵 A 的行数 n 和列数 m n, m = map(int, input().split()) # 初始化矩阵 A A = [] # 读取矩阵 A 的每一行 for _ in range(n): row = list(map(int, input().split())) A.append(row) # 读取矩阵 B 的行数 p 和列数 q p, q = map(int, input().split()) # 初始化矩阵 B B = [] # 读取矩阵 B 的每一行 for _ in range(p): row = list(map(int, input().split())) B.append(row) # 初始化结果矩阵 C,行数为 n,列数为 q C = [[0] * q for _ in range(n)] # 进行矩阵相乘 for i in range(n): for j in range(q): for k in range(m): C[i][j] += A[i][k] * B[k][j] # 输出结果矩阵 C for row in C: print(" ".join(map(str, row))) ``` 代码解释 1. 输入矩阵: - 先读取矩阵 `A` 的行数 `n` 和列数 `m`,并逐行读取矩阵 `A` 的元素。 - 再读取矩阵 `B` 的行数 `p` 和列数 `q`,并逐行读取矩阵 `B` 的元素。 2. 初始化结果矩阵: - 初始化结果矩阵 `C`,其行数为 `n`,列数为 `q`,所有元素初始化为 0。 3. 矩阵相乘: - 使用三层嵌套循环进行矩阵相乘。外层两层循环遍历结果矩阵 `C` 的每个位置 `(i, j)`。 - 内层循环计算 `A` 矩阵第 `i` 行和 `B` 矩阵第 `j` 列对应元素乘积的和,赋值给 `C[i][j]`。 4. 输出结果: - 遍历结果矩阵 `C`,将每行元素转换为字符串并用空格连接后输出。 复杂度分析 - 时间复杂度:$O(n * m * q)$,其中 $n$ 是矩阵 `A` 的行数,$m$ 是矩阵 `A` 的列数(也是矩阵 `B` 的行数),$q$ 是矩阵 `B` 的列数。 - 空间复杂度:$O(n * q)$,主要用于存储结果矩阵 `C`。 ######[AI问答 | 584点数解答 | 2025-12-09 12:29:22]
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)469
- C++ 实现:轻松计算两个矩阵的乘法并输出结果(字节豆包 | 381点数解答 | 2025-12-03 19:20:23)121
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)352
- C++求解序列或与运算和差值:避O(nq)复杂度及数据处理要点(字节豆包 | 534点数解答 | 2025-10-17 20:05:07)65
- Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(GPT | 422点数解答 | 2024-10-29 15:43:54)425
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)417
- Golang开发:解析JSON数据时数值默认类型及示例解析(百度文心 | 393点数解答 | 2023-11-09 18:13:06)285
- SQL Working Areas Sizing: Manual vs. Automatic Policy - A Comprehensive Analysis(阿里通义 | 530点数解答 | 2024-05-13 10:55:58)312
- Python实现:读入正整数后从大到小打印,代码详解!(字节豆包 | 165点数解答 | 2025-12-07 09:44:50)76
- Python求解n以内3的倍数:代码实现及开发注意事项 (字节豆包 | 222点数解答 | 2025-12-07 12:28:15)47
- C语言实现:无输入打印精美心形图案代码揭秘(DeepSeek | 72点数解答 | 2025-12-15 17:38:15)42
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)322