1. 轴对称三角形绘制算法解析
在编程竞赛和算法练习中,图形输出类题目是检验循环控制能力的经典题型。今天我将分享一个关于轴对称三角形绘制的完整解决方案,包含思路分析、代码实现和优化技巧。
1.1 问题理解与数学建模
轴对称图形在数学上分为x轴对称和y轴对称两种基本类型。x轴对称指图形关于水平轴对称,y轴对称指图形关于垂直轴对称。对于三角形而言:
- x轴对称:由两个相同三角形上下对称组成
- y轴对称:由两个相同三角形左右对称组成
输入规范要求:
- 行数n ≤ 10
- 对称类型为'x'或'y'
- 输出对应的ASCII图形
1.2 核心算法设计思路
解决这类图形输出问题的通用方法是:
- 分析图形构成规律
- 建立行号与空格、符号数量的数学关系
- 使用嵌套循环实现图形绘制
对于本题目,需要分别处理两种对称情况:
x轴对称实现方案
cpp复制for(上半部分行数){
输出前导空格
输出星号
换行
}
for(下半部分行数){
输出前导空格 // 与上半部分对称
输出星号
换行
}
y轴对称实现方案
cpp复制for(每一行){
输出左侧前导空格
输出左侧三角形
输出中间间隔
输出右侧三角形
换行
}
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. x轴对称实现详解
2.1 上半部分算法
对于n行x轴对称图形,实际由两个n/2行的三角形组成。上半部分的规律:
- 空格数量:n/2 - 当前行号
- 星号数量:2×行号 - 1
例如n=6时:
code复制行号 | 空格数 | 星号数
1 | 2 | 1
2 | 1 | 3
3 | 0 | 5
代码实现:
cpp复制for(int i=1; i<=n/2; i++){
for(int j=1; j<=n/2-i; j++) cout<<" ";
for(int j=1; j<=2*i-1; j++) cout<<'*';
cout<<endl;
}
2.2 下半部分对称处理
下半部分与上半部分呈镜像关系,只需将行号逆序即可复用相同逻辑:
cpp复制for(int
