xihakonglongda 2024-06-08 16:49 采纳率: 50%
浏览 0

有题不会21014131

题目描述
小S得到了一张迷宫,样子是这样的:

0 0 0 0 0 0 0 0 0 0 0
0 M 0 0 0
0 0 0 0 0 0
0 0 0 0
0 0 0 0 0 0 0
0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
注意:0代表墙, 代表路,M代表小S,每个字符中有一个空格隔开。

现在给你一串字符串,里面有up down right left,也有可能会有其他的单词,分别代表上 下 右 左,现在问你经过操作后,现在地图长什么样?(包括小S)

输入格式
一串字符串,里面可能有up down right left,也有可能会有其他的单词。

输出格式
地图的样子。

输入输出样例
输入 #1复制
rightdownrightleftrightdowndown
输出 #1复制
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0
0 0 0 0 0 0
0 0 0 0
0 0 M 0 0 0 0 0
0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
输入 #2复制
rightdad
输出 #2复制
0 0 0 0 0 0 0 0 0 0 0
0 M 0 0 0
0 0 0 0 0 0
0 0 0 0
0 0 0 0 0 0 0
0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
说明/提示
不会有撞墙的情况。
遇到不属于up down right left中的单词时,无需理会这个单词,如uu a。

img

中间有空格!
https://www.luogu.com.cn/problem/T460774?contestId=174928

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-08 16:49
    关注

    引自免费微信小程序:皆我百晓生

    为了帮助您解决这个问题,我们可以编写一个简单的C++程序来实现这个功能。首先,我们需要创建一个二维数组来表示迷宫,然后遍历输入的字符串,并根据方向进行移动。遇到up, down, right, left时,更新小S的位置并在正确的位置设置为'M'。对于其他单词,我们忽略它们。

    下面是一个详细的C++代码实现:

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main() {
        // 初始化迷宫
        const int maze_size = 11;
        char maze[maze_size][maze_size] = {
            {'0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'},
            {'0', ' ', '0', '0', '0', '0', '0', '0', '0', '0', '0'},
            {'0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'},
            {'0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'},
            {'0', '0', '0', '0', ' ', '0', '0', '0', '0', '0', '0'},
            {'0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'},
            {'0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'},
            {'0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'},
            {'0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'},
            {'0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'}
        };
    
        string directions = "rightdownrightleftrightdowndown";
        int x = 1, y = 0; // 小S初始位置 (y, x)
    
        for (char c : directions) {
            if (c == 'u' || c == 'U') { // 上
                if (y > 0 && maze[y - 1][x] != '0') --y;
            } else if (c == 'd' || c == 'D') { // 下
                if (y < maze_size - 2 && maze[y + 1][x] != '0') ++y;
            } else if (c == 'r' || c == 'R') { // 右
                if (x < maze_size - 2 && maze[y][x + 1] != '0') ++x;
            } else if (c == 'l' || c == 'L') { // 左
                if (x > 0 && maze[y][x - 1] != '0') --x;
            }
        }
    
        // 更新小S的位置并打印迷宫
        maze[y][x] = 'M';
        for (int i = 0; i < maze_size; ++i) {
            for (int j = 0; j < maze_size; ++j) {
                cout << maze[i][j];
                if (j != maze_size - 1) cout << " ";
            }
            cout << endl;
        }
    
        return 0;
    }
    

    这段代码首先初始化了一个迷宫,然后遍历给定的方向字符串,根据上下左右四个方向更新小S的位置。在更新完所有方向后,我们会把小S的新位置设为'M',并打印出最终的迷宫。

    对于输入样例#1 "rightdownrightleftrightdowndown",运行上述代码会得到输出样例#1所示的结果。

    对于输入样例#2 "rightdad",因为'dad'不是有效的方向,所以它会被忽略,输出结果与输入样例#1相同。

    注意:这个程序假定输入的字符串只包含有效的方向以及不需要处理的其他单词。在实际应用中,你可能需要添加额外的错误检查和处理逻辑来确保输入的有效性。

    评论 编辑记录

报告相同问题?

问题事件

  • 修改了问题 6月8日
  • 修改了问题 6月8日
  • 修改了问题 6月8日
  • 创建了问题 6月8日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表