题解
2026-02-05 22:44:27
发布于:浙江
21阅读
0回复
0点赞
题目解析
- 输入输出:输入一个奇数 (),输出 行 列的 H 字矩阵,由字符
|、-、a组成。 - 数据范围: 最大为 49,矩阵规模不超过 ,计算量极小。
- 复杂度要求:时间复杂度 ,空间复杂度 。
- 算法知识点:
模拟、二维图形构造、条件判断优先级
思路解析
- 逐行逐列构造:使用双重循环遍历矩阵的每个位置 ,其中 为行号, 为列号(从 1 开始计数)。
- 优先级判定:由于中间横线(
-)不应覆盖左右边界的竖线(|),判定顺序至关重要:- 第一优先级:若 或 (左右边界),输出
|; - 第二优先级:若 (中间行)且不在边界上,输出
-; - 默认情况:其余位置均填充
a。
- 第一优先级:若 或 (左右边界),输出
- 边界处理:每完成一行的输出,立即打印换行符。
完整代码
#include <bits/stdc++.h>
using namespace std;
int ans[1000]; // 原代码定义但未使用,可删除
int main() {
int n;
cin >> n;
// 遍历每一行 i
for (int i = 1; i <= n; i++) {
// 遍历每一列 j
for (int j = 1; j <= n; j++) {
// 关键:先判断左右边界,确保中间行的两端仍是 '|'
if (j == 1 or j == n)
cout << "|";
// 再判断中间横线(第 (n+1)/2 行)
else if (i == (n + 1) / 2)
cout << "-";
else
cout << "a";
}
cout << endl; // 每行结束换行
}
return 0;
}
全部评论 1


2026-02-24 来自 湖北
1
2026-02-25 来自 湖北
1
2026-02-25 来自 湖北
1
2026-02-25 来自 湖北
0





有帮助,赞一个