题解:洛谷 B2005 字符三角形

【题目来源】

洛谷:B2005 字符三角形 - 洛谷

【题目描述】

给定一个字符,用它构造一个底边长 5 个字符,高 3 个字符的等腰字符三角形。

【输入】

输入只有一行,包含一个字符。

【输出】

该字符构成的等腰三角形,底边长 5 个字符,高 3 个字符。

【输入样例】

*

【输出样例】

  *
 ***
*****

【核心思想】

  1. 问题分析:给定一个字符 \(c\),要求用它构造一个底边长为 5、高为 3 的等腰字符三角形。三角形三行分别为 1 个、3 个、5 个字符,每行居中排列。

  2. 算法选择

    • 直接输出:三角形尺寸固定且极小,根据输入字符直接拼接输出三行即可
  3. 关键步骤

    • 读入字符cin >> c 读取输入字符
    • 逐行输出
      • 第 1 行:" " + c(2 个空格 + 1 个字符)
      • 第 2 行:" " + c + c + c(1 个空格 + 3 个字符)
      • 第 3 行:c + c + c + c + c(5 个字符)
    • 换行控制:第 1、2 行末尾用 endl 换行,第 3 行末尾无换行
  4. 时间/空间复杂度

    • 时间复杂度:\(O(1)\),固定 3 行输出
    • 空间复杂度:\(O(1)\),仅需一个字符变量
  5. 固定图案输出的核心思想

    • 等差数列规律:每行字符数构成等差数列 1, 3, 5,公差为 2
    • 空格对称递减:前置空格数从 2 递减到 0,与字符数增加保持居中
    • 变量复用:输入字符 \(c\) 在三行中被重复使用,无需存储多行内容
    • 适用于固定尺寸图形输出、字符格式化类入门问题

【算法标签】

入门 #语法基础

【代码详解】

#include <bits/stdc++.h>  // 包含标准库头文件(万能头文件)
using namespace std;      // 使用标准命名空间

/**
 * 主函数 - 程序入口
 * @return 程序执行状态码(0表示成功)
 */
int main()
{
    char c;               // 定义一个字符变量c

    cin >> c;             // 从标准输入读取一个字符赋值给c

    // 输出字符金字塔图案
    cout << "  " << c << endl;       // 第一行:2个空格加1个字符
    cout << " " << c << c << c << endl;  // 第二行:1个空格加3个字符
    cout << c << c << c << c << c;    // 第三行:5个字符

    return 0;            // 返回程序执行成功状态码
}

【运行结果】

*
  *
 ***
*****
posted @ 2026-08-05 15:43  团爸讲算法  阅读(30)  评论(0)    收藏  举报