题解
2026-02-05 22:47:55
发布于:浙江
7阅读
0回复
0点赞
题目解析
- 输入输出:输入一个奇数 (),输出 行 列的"日"字矩阵,由字符
|、-、x组成。 - 数据范围: 最大为 49,矩阵规模不超过 ,计算量极小。
- 复杂度要求:时间复杂度 ,空间复杂度 。
- 算法知识点:
模拟、二维图形构造、条件判断优先级
思路解析
- 图形结构分析:"日"字由三横(第一行、中间行、最后一行)和两竖(左右边界)构成。与"H字矩阵"不同,本题的横线出现在第 行、第 行以及第 行。
- 优先级判定:为避免横线覆盖竖线,需遵循以下判断顺序:
- 第一优先级:若处于第 列或第 列(左右边界),输出
|; - 第二优先级:若处于第 行、第 行或第 行(三横),输出
-; - 默认情况:其余位置填充
x。
- 第一优先级:若处于第 列或第 列(左右边界),输出
- 逐行构造:外层循环控制行号 ,内层循环控制列号 ,每行结束后输出换行符。
完整代码
#include <bits/stdc++.h>
using namespace std;
int ans[1000]; // 原代码遗留,实际未使用
int main() {
int n;
cin >> n;
// 遍历每一行
for (int i = 1; i <= n; i++) {
// 遍历每一列
for (int j = 1; j <= n; j++) {
// 第一优先级:左右边界竖线 '|'
if (j == 1 or j == n)
cout << "|";
// 第二优先级:第一行、最后一行、中间行的横线 '-'
// 注意:中间行序号为 (n+1)/2
else if (i == (n + 1) / 2 or i == 1 or i == n)
cout << "-";
// 其余位置填充 'x'
else
cout << "x";
}
cout << endl; // 每行结束换行
}
return 0;
}
这里空空如也

有帮助,赞一个