题目解析
* 输入输出:输入一个正整数 nnn,输出 nnn 行的三角形图案;第 iii 行包含 iii 个大写字母,字母从 A 开始顺序填充,到达 Z 后下一个回到 A,行末无多余空格。
* 数据范围:2≤n≤402 \leq n \leq 402≤n≤40,总规模较小,直接模拟即可。
* 复杂度要求:时间复杂度 O(n2)O(n^2)O(n2),最多输出 n(n+1)2≤820\frac{n(n+1)}{2} \leq 8202n(n+1) ≤820 个字符;空间复杂度 O(1)O(1)O(1)。
* 算法知识点:模拟、嵌套循环、字符循环处理
思路解析
这是一个典型的字符循环填充问题,核心在于控制字符在 A~Z 之间循环:
1. 状态变量:维护一个字符变量 ch,初始化为 'A',用于记录当前应输出的字母。
2. 行控制:外层循环 iii 从 111 到 nnn,表示当前是第 iii 行,该行需要输出 iii 个字符。
3. 列输出:内层循环 jjj 从 111 到 iii,每次输出当前 ch,并将 ch 向后移动一位(ch++)。
4. 循环复位:当 ch 自增后超过 'Z'(即 ASCII 码变为 91,对应字符 '[')时,将其重置为 'A',实现字母表的循环使用。
完整代码