题解:P1000 超级玛丽游戏

P1000 题解

欢迎来到 AstralNahida 的题解频道!

这题我会给出三种解法。

首先上场的是 PHP,我们知道,PHP 会直接输出标签外的字符,所以我们直接把需要输出的东西复制粘贴即可。

AC Code:

复制代码
                ********
               ************
               ####....#.
             #..###.....##....
             ###.......######              ###            ###
                ...........               #...#          #...#
               ##*#######                 #.#.#          #.#.#
            ####*******######             #.#.#          #.#.#
           ...#***.****.*###....          #...#          #...#
           ....**********##.....           ###            ###
           ....****    *****....
             ####        ####
           ######        ######
##############################################################
#...#......#.##...#......#.##...#......#.##------------------#
###########################################------------------#
#..#....#....##..#....#....##..#....#....#####################
##########################################    #----------#
#.....#......##.....#......##.....#......#    #----------#
##########################################    #----------#
#.#..#....#..##.#..#....#..##.#..#....#..#    #----------#
##########################################    ############

接下来登场的是 C++。

第一种办法就是老老实实一行一行地输出。

AC Code:

cpp 复制代码
#include <iostream>

using std::cout;

int main(void) {
    cout << "                ********\n";
    cout << "               ************\n";
    cout << "               ####....#.\n";
    cout << "             #..###.....##....\n";
    cout << "             ###.......######              ###            ###\n";
    cout << "                ...........               #...#          #...#\n";
    cout << "               ##*#######                 #.#.#          #.#.#\n";
    cout << "            ####*******######             #.#.#          #.#.#\n";
    cout << "           ...#***.****.*###....          #...#          #...#\n";
    cout << "           ....**********##.....           ###            ###\n";
    cout << "           ....****    *****....\n";
    cout << "             ####        ####\n";
    cout << "           ######        ######\n";
    cout << "##############################################################\n";
    cout << "#...#......#.##...#......#.##...#......#.##------------------#\n";
    cout << "###########################################------------------#\n";
    cout << "#..#....#....##..#....#....##..#....#....#####################\n";
    cout << "##########################################    #----------#\n";
    cout << "#.....#......##.....#......##.....#......#    #----------#\n";
    cout << "##########################################    #----------#\n";
    cout << "#.#..#....#..##.#..#....#..##.#..#....#..#    #----------#\n";
    cout << "##########################################    ############\n";

    return 0;
}

这样可以轻松通过。

第二种办法是使用 C++11 加入的原始字符串字面量 ,形如 R"delimiter(原始字符串内容)delimiter",其主要作用是:

  1. 让你可以直接书写字符串,无需对诸如反斜杠 \、双引号 " 等特殊字符进行转义处理,这样能让字符串的表达更加直观清晰。并且,在这样的字符串中,可以直接换行,无需使用 \n

  2. 其中 delimiter 是分隔符,两处必须完全相同。这是个可写可不写的部分,如果写上,那么原始字符串中即使出现 ) 也可以正常处理。

当然,我们在这里只需要知道第一条作用就好了。我们把要求输出的东西直接复制到 R"()" 的括号内部即可。

AC Code:

cpp 复制代码
#include <iostream>

int main() {
    std::cout << R"(                ********
               ************
               ####....#.
             #..###.....##....
             ###.......######              ###            ###
                ...........               #...#          #...#
               ##*#######                 #.#.#          #.#.#
            ####*******######             #.#.#          #.#.#
           ...#***.****.*###....          #...#          #...#
           ....**********##.....           ###            ###
           ....****    *****....
             ####        ####
           ######        ######
##############################################################
#...#......#.##...#......#.##...#......#.##------------------#
###########################################------------------#
#..#....#....##..#....#....##..#....#....#####################
##########################################    #----------#
#.....#......##.....#......##.....#......#    #----------#
##########################################    #----------#
#.#..#....#..##.#..#....#..##.#..#....#..#    #----------#
##########################################    ############ )";

    return 0;
}

好啦,P1000 的题解就到这里了。祝各位 rp++ 喵。


Update:

  • 2025/05/10 17:19 修改了一点小错误。