top1编程
← 返回题目
题解

输出爱心

1 条题解

  • 0
    @ 2026-8-5 21:17:14

    P4215 输出爱心(入门)

    解题思路

    这道题不需要输入,只需要把题目图里的爱心一行一行原样"抄"到输出里。

    把爱心想象成用积木摆图案:每一行用几个空格、几个星号都是定死的。比如第 1 行是 4 个星号、3 个空格、再 4 个星号;第 4 行前面有 1 个空格;第 8 行前面有 5 个空格……这些空格一个都不能多、不能少,少了一个爱心就会变形。

    小技巧:

    • 每行用 cout << "..." << endl; 输出,endl 表示换行。
    • 数空格时要特别仔细,眼睛容易看花,可以像数格子一样一格一格数过去。
    • 因为没有任何输入,程序一运行就直接输出 8 行图案。

    边界情况:题目没有输入,所以不用考虑输入为 0、为 1 之类的特殊情况,只要把 8 行字符原样输出就满分。

    参考代码

    // 用途:按题目给出的爱心图案,一行一行原样输出8行字符
    #include <iostream>
    using namespace std;
    
    int main() {
        cout << "****   ****" << endl;
        cout << "*   * *   *" << endl;
        cout << "*    *    *" << endl;
        cout << " *       *" << endl;
        cout << "  *     *" << endl;
        cout << "   *   *" << endl;
        cout << "    * *" << endl;
        cout << "     *" << endl;
        return 0;
    }
    

    复杂度分析

    程序只做固定 8 次输出,每次输出一行固定长度的字符串,和任何输入数据都无关,时间复杂度 O(1),额外空间 O(1)。就算把同样的题改成 1000 行的图案,只要用循环输出,也是 O(行数) 的时间;但本题只有 8 行,直接逐行抄写最简单。

    • 1