题解
2026-02-05 23:06:54
发布于:浙江
22阅读
0回复
0点赞
题目解析
- 输入输出:输入一个正整数 (保证为奇数,);输出一个 的字符矩阵,其中第 列、第 列以及主对角线(从左上到右下)位置为
+,其余位置为-。 - 数据范围: 最大为 ,矩阵规模较小,直接模拟构造即可。
- 复杂度要求:时间复杂度 ,空间复杂度 (不计输出缓冲区)。
- 算法知识点:
模拟、矩阵构造、坐标判断
思路解析
- 矩阵遍历:使用双重循环
i(行)和j(列)遍历 的每个位置,范围均为 。 - 判定规则:对于位置 ,若满足以下任一条件则输出
+:- :第 列(N 的左竖线);
- :第 列(N 的右竖线);
- :主对角线(N 的斜线)。
这三个区域的并集恰好构成字母 "N" 的形状。
- 填充字符:不满足上述条件的位置输出
-,完成矩阵构造。 - 换行控制:内层循环结束后输出换行符,开始下一行的打印。
完整代码
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
// 遍历矩阵的每一行
for (int i = 1; i <= n; i++) {
// 遍历当前行的每一列
for (int j = 1; j <= n; j++) {
// 关键判定:主对角线(i==j)、第1列(j==1)或第n列(j==n)
if (i == j or j == 1 or j == n) {
cout << "+";
}
else {
cout << "-";
}
}
cout << endl; // 每行结束换行
}
return 0;
}
这里空空如也

有帮助,赞一个