C++ 实现无人机扫描地图数据读取与可视化:代码详解及复杂度分析
```cpp #include <iostream> #include <vector> int main() { int n; std::cin >> n; std::vector<int> data(n * n); for (int i = 0; i < n * n; ++i) { std::cin >> data[i]; } for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { char symbol = data[i * n + j] == 1? '#' : 'o'; std::cout << symbol; } std::cout << std::endl; } return 0; } ``` 代码解释: 1. 输入读取: - 首先使用 `std::cin` 读取整数 `n`,它代表地图的边长,即地图是 `n * n` 的大小。 - 然后创建一个大小为 `n * n` 的 `std::vector<int>` 类型的容器 `data`,用于存储无人机扫描得到的 `n * n` 个数字。通过循环将这些数字依次读入 `data` 中。 2. 地图输出: - 利用两层嵌套的 `for` 循环遍历地图的每一个位置。外层循环控制行(从第 0 行到第 `n - 1` 行),内层循环控制列(从第 0 列到第 `n - 1` 列)。 - 对于每个位置 `(i, j)`,根据 `data[i * n + j]` 的值来确定该位置是陆地还是水域。如果值为 1,将字符 `'#'` 赋值给 `symbol`;如果值为 0,将字符 `'o'` 赋值给 `symbol`。 - 输出当前位置对应的字符 `symbol`。 - 当一行的所有列都输出完后,使用 `std::cout << std::endl;` 进行换行,准备输出下一行。 复杂度分析: - 时间复杂度:代码中有一个嵌套循环用于遍历 `n * n` 个位置,因此时间复杂度为 $O(n^2)$。 - 空间复杂度:使用了一个大小为 `n * n` 的 `std::vector<int>` 来存储输入数据,所以空间复杂度也是 $O(n^2)$。 ######[AI问答 | 550点数解答 | 2025-11-15 19:07:10]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)349
- Java代码实现从JSON数据中提取ID,涉及“数据”与“项目 - 知识库”结构(字节豆包 | 603点数解答 | 2025-04-15 22:48:51)240
- C++ 实现:计算一排鹅与最高、最矮鹅的身高差及代码详解(字节豆包 | 549点数解答 | 2025-11-16 20:19:06)86
- 编程揭秘:计算 𝑛! 在 𝑃 进制下末尾零个数的方法与代码实现(DeepSeek | 549点数解答 | 2026-01-11 17:49:54)50
- 深度揭秘 Oracle Workarea Size Policy:参数调优助力数据库性能飞升(阿里通义 | 372点数解答 | 2024-05-13 10:54:45)231
- C++求解序列或与运算和差值:避O(nq)复杂度及数据处理要点(字节豆包 | 534点数解答 | 2025-10-17 20:05:07)63
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)319
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)468
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)359
- Java 实现:轻松生成 5 位数字、大小写字母混合验证码( | 266点数解答 | 2024-03-06 17:39:10)334
- 深度剖析:游戏中两个 Buff 效果的触发条件、逻辑及注意要点 (阿里通义 | 566点数解答 | 2024-11-26 14:24:12)262
- 深度剖析 Vue 2 插槽:从基础使用到高级玩法(字节豆包 | 165点数解答 | 2024-11-29 11:25:06)217