1 条题解
-
0
📝 题目大意
给定一个 的整数矩阵 (),将 替换为英文句点
.,将 分别替换为大写字母A~Z,输出对应的 个长度为 的字符串。💡 解题思路
- 题目分析:,可以直接边读边输出,无需存储整个矩阵。核心是将数字 和 分别映射为
.和A~Z。 - 算法推导:
- 读入 和 (代码中对应变量
n和m)。 - 遍历每个位置 ,读入值
a[i][j]:- 若
a[i][j] == 0,直接输出'.'; - 否则输出
(char)(a[i][j] + 'A' - 1),即利用 ASCII 码偏移将数字'A','B',……,'Z'。
- 若
- 每行结束后输出一个换行符。
- 读入 和 (代码中对应变量
- 边界与细节:
- 当 时不需要作字符转换,直接输出
.即可。 - 使用
a[i][j] + 'A' - 1时,减去的1是因为'A'本身对应 ,偏移量为 。 - 数组大小开 略大于 的下标上限,防止越界。
- 当 时不需要作字符转换,直接输出
⏱️ 复杂度分析
- 时间复杂度:,每个元素仅被处理一次。
- 空间复杂度:(存储输入矩阵),也可优化为 额外空间(边读边输出)。
💻 标准代码 (C++)
#include <bits/stdc++.h> using namespace std; int main () { int n, m, a[105][105]; // n=H, m=W, 数组多开一些防止越界 scanf("%d%d", &n, &m); for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { scanf("%d", &a[i][j]); if (a[i][j] == 0) printf("."); // 0 → '.' else printf("%c", a[i][j] + 'A' - 1); // 1~26 → 'A'~'Z' } printf("\n"); // 每行末尾换行 } return 0; } - 题目分析:,可以直接边读边输出,无需存储整个矩阵。核心是将数字 和 分别映射为
- 1
信息
- ID
- 691
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 1
- 已通过
- 1
- 上传者