c++
以下是使用 C++ 实现根据给定的行数 `n` 和列数 `m` 生成“竖条纹小行星矩阵”的代码: ```cpp #include <iostream> int main() { int n, m; // 从标准输入读取行数 n 和列数 m std::cin >> n >> m; // 外层循环控制行数,遍历每一行 for (int i = 0; i < n; ++i) { // 内层循环控制列数,遍历每一列 for (int j = 0; j < m; ++j) { // 判断列索引的奇偶性 if (j % 2 == 0) { // 偶数索引列输出 * std::cout << '*'; } else { // 奇数索引列输出 # std::cout << '#'; } } // 每一行输出结束后换行 std::cout << std::endl; } return 0; } ``` 代码解释 1. 输入部分: - 使用 `std::cin` 读取用户输入的两个整数,分别存储在变量 `n`(行数)和 `m`(列数)中。 2. 矩阵生成部分: - 通过嵌套的 `for` 循环来生成矩阵。外层循环控制行数,会执行 `n` 次;内层循环控制列数,会执行 `m` 次。 - 在内层循环中,通过判断列索引 `j` 对 2 取模的结果是否为 0 来决定当前位置输出的字符。若 `j % 2 == 0`,则输出 `*`;否则输出 `#`。 3. 换行处理: - 每完成一行元素的输出后,使用 `std::cout << std::endl;` 进行换行操作,使矩阵按预期的格式输出。 复杂度分析 - 时间复杂度:由于需要遍历矩阵的每一个元素,所以时间复杂度为 $O(n \times m)$,其中 `n` 是行数,`m` 是列数。 - 空间复杂度:代码中只使用了固定的额外变量(如 `i`、`j` 等),不随输入规模的增大而增加,因此空间复杂度为 $O(1)$。 [2026-01-31 22:01:08 | AI问答 | 540点数解答]