题目解析
* 输入输出:输入一个正整数 mmm(保证为奇数,3≤m≤493 \leq m \leq 493≤m≤49);输出一个 m×mm \times mm×m 的字符矩阵,其中第 111 列、第 mmm 列以及主对角线(从左上到右下)位置为 +,其余位置为 -。
* 数据范围:mmm 最大为 494949,矩阵规模较小,直接模拟构造即可。
* 复杂度要求:时间复杂度 O(m2)O(m^2)O(m2),空间复杂度 O(1)O(1)O(1)(不计输出缓冲区)。
* 算法知识点:模拟、矩阵构造、坐标判断
思路解析
1. 矩阵遍历:使用双重循环 i(行)和 j(列)遍历 m×mm \times mm×m 的每个位置,范围均为 [1,m][1, m][1,m]。
2. 判定规则:对于位置 (i,j)(i, j)(i,j),若满足以下任一条件则输出 +:
* j=1j = 1j=1:第 111 列(N 的左竖线);
* j=mj = mj=m:第 mmm 列(N 的右竖线);
* i=ji = ji=j:主对角线(N 的斜线)。
这三个区域的并集恰好构成字母 "N" 的形状。
3. 填充字符:不满足上述条件的位置输出 -,完成矩阵构造。
4. 换行控制:内层循环结束后输出换行符,开始下一行的打印。
完整代码