题解
2026-02-05 22:07:23
发布于:浙江
5阅读
0回复
0点赞
题目解析
- 输入输出:输入一个正整数 ,输出 行的三角形图案;第 行包含 个大写字母,字母从
A开始顺序填充,到达Z后下一个回到A,行末无多余空格。 - 数据范围:,总规模较小,直接模拟即可。
- 复杂度要求:时间复杂度 ,最多输出 个字符;空间复杂度 。
- 算法知识点:
模拟、嵌套循环、字符循环处理
思路解析
这是一个典型的字符循环填充问题,核心在于控制字符在 A~Z 之间循环:
- 状态变量:维护一个字符变量
ch,初始化为'A',用于记录当前应输出的字母。 - 行控制:外层循环 从 到 ,表示当前是第 行,该行需要输出 个字符。
- 列输出:内层循环 从 到 ,每次输出当前
ch,并将ch向后移动一位(ch++)。 - 循环复位:当
ch自增后超过'Z'(即 ASCII 码变为 91,对应字符'[')时,将其重置为'A',实现字母表的循环使用。
完整代码
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
char ch = 'A'; // 当前待输出的字母,从A开始
for (int i = 1; i <= n; i++) { // 第i行
for (int j = 1; j <= i; j++) { // 第i行输出i个字符
cout << ch;
ch++; // 移动到下一个字母
if (ch == '[') ch = 'A'; // 关键:'Z'+1='['(ASCII 91),越界则循环回A
// 等价写法:if (ch > 'Z') ch = 'A';
}
cout << endl;
}
return 0;
}
这里空空如也

有帮助,赞一个