C++ 实现 5×5 矩阵两行交换:代码、解释与复杂度分析
```cpp #include <iostream> #include <vector> int main() { // 定义一个 5x5 的二维向量来存储矩阵 std::vector<std::vector<int>> matrix(5, std::vector<int>(5)); // 读取矩阵的每一行元素 for (int i = 0; i < 5; ++i) { for (int j = 0; j < 5; ++j) { std::cin >> matrix[i][j]; } } // 读取要交换的两行的行号 m 和 n int m, n; std::cin >> m >> n; // 由于输入的行号是从 1 开始的,转换为 0 索引 --m; --n; // 交换第 m 行和第 n 行 std::swap(matrix[m], matrix[n]); // 输出交换后的矩阵 for (int i = 0; i < 5; ++i) { for (int j = 0; j < 5; ++j) { if (j > 0) { std::cout << " "; } std::cout << matrix[i][j]; } std::cout << std::endl; } return 0; } ``` 代码解释 1. 矩阵存储:使用一个二维向量 `matrix` 来存储 5x5 的矩阵,它的大小为 5 行 5 列。 2. 读取矩阵元素:通过两层嵌套的 `for` 循环,依次读取矩阵每一行的元素并存储到 `matrix` 中。 3. 读取要交换的行号:读取输入的要交换的两行的行号 `m` 和 `n`,并将其转换为 0 索引(因为向量的索引从 0 开始)。 4. 交换行:使用 `std::swap` 函数交换 `matrix` 中第 `m` 行和第 `n` 行的元素。 5. 输出交换后的矩阵:再次使用两层嵌套的 `for` 循环,输出交换后的矩阵,每行元素之间用空格分隔,每行末尾换行。 复杂度分析 - 时间复杂度:$O(1)$,因为矩阵的大小是固定的 5x5,所有操作的时间复杂度都是常数级的。 - 空间复杂度:$O(1)$,主要的空间开销是存储 5x5 的矩阵,空间大小是固定的。 ######[AI问答 | 591点数解答 | 2025-11-16 20:45:32]
- C++ 实现:轻松计算两个矩阵的乘法并输出结果(字节豆包 | 381点数解答 | 2025-12-03 19:20:23)115
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)349
- C++ 实现:轻松找出 n 个整数中的第二小值(字节豆包 | 260点数解答 | 2026-02-07 21:19:29)27
- C++实现找出数组中第二小的值(字节豆包 | 526点数解答 | 2026-03-27 19:40:26)11
- 找出数组中第二小值的C++代码实现(字节豆包 | 696点数解答 | 2026-03-28 19:40:41)7
- C++求解序列或与运算和差值:避O(nq)复杂度及数据处理要点(字节豆包 | 534点数解答 | 2025-10-17 20:05:07)63
- 探寻数组中最长摆动子序列长度:思路剖析与代码优化(GPT | 758点数解答 | 2024-12-23 23:18:29)271
- 独家剖析:求解数组最长摆动子序列长度的代码实现与改进建议(GPT | 350点数解答 | 2024-12-23 23:20:54)265
- 求解 1 至 n 内第 k 大孤独数:质数与余数的巧妙探寻(字节豆包 | 298点数解答 | 2025-11-10 20:01:57)159
- 巧判小朋友同桌意愿:满足需求还是无解难题?(字节豆包 | 599点数解答 | 2025-11-16 20:06:12)71
- 巧用代码判断:能否让 2n 个小朋友都拥有满意同桌?(字节豆包 | 445点数解答 | 2025-11-16 20:07:02)82
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)319