题目解析
* 输入输出:输入一个奇数 NNN(5≤N≤495 \leq N \leq 495≤N≤49),输出 NNN 行 NNN 列的 H 字矩阵,由字符 |、-、a 组成。
* 数据范围:NNN 最大为 49,矩阵规模不超过 49×4949 \times 4949×49,计算量极小。
* 复杂度要求:时间复杂度 O(N2)O(N^2)O(N2),空间复杂度 O(1)O(1)O(1)。
* 算法知识点:模拟、二维图形构造、条件判断优先级
思路解析
1. 逐行逐列构造:使用双重循环遍历矩阵的每个位置 (i,j)(i, j)(i,j),其中 iii 为行号,jjj 为列号(从 1 开始计数)。
2. 优先级判定:由于中间横线(-)不应覆盖左右边界的竖线(|),判定顺序至关重要:
* 第一优先级:若 j=1j=1j=1 或 j=Nj=Nj=N(左右边界),输出 |;
* 第二优先级:若 i=(N+1)/2i = (N+1)/2i=(N+1)/2(中间行)且不在边界上,输出 -;
* 默认情况:其余位置均填充 a。
3. 边界处理:每完成一行的输出,立即打印换行符。
完整代码