top1编程
← 返回题目
题解

【入门】轴对称三角形

1 条题解

  • 0
    @ 2026-7-31 16:02:58

    解题思路

    题目要求输出一个等腰三角形沿 x 轴或 y 轴对称后的图形。

    等腰三角形(n 行)的样子:

    第 i 行(从 0 开始):先输出 n-1-i 个空格,再输出 2i+1 个星。

    x 轴对称(上下对称):

    把三角形沿水平线翻转,得到下面的镜像部分。所以先输出正着的三角形,再输出倒着的三角形,共 2n 行。

    y 轴对称(左右对称):

    把三角形沿竖线翻转。因为等腰三角形本身左右对称,翻转后一模一样,所以直接输出原来的三角形就行。

    参考代码

    #include <iostream>
    using namespace std;
    
    int main() {
        int n;
        char c;
        cin >> n >> c;
    
        if (c == 'x') {
            // 上半部分(正三角形)
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < n - 1 - i; j++) cout << ' ';
                for (int j = 0; j < 2 * i + 1; j++) cout << '*';
                cout << endl;
            }
            // 下半部分(镜像)
            for (int i = n - 1; i >= 0; i--) {
                for (int j = 0; j < n - 1 - i; j++) cout << ' ';
                for (int j = 0; j < 2 * i + 1; j++) cout << '*';
                cout << endl;
            }
        } else {
            // y 轴对称:本身左右对称,直接输出
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < n - 1 - i; j++) cout << ' ';
                for (int j = 0; j < 2 * i + 1; j++) cout << '*';
                cout << endl;
            }
        }
        return 0;
    }
    

    复杂度分析

    • 时间复杂度:O(N²),每行打印字符
    • 空间复杂度:O(1)
    • 1