社区讨论

站外题求助,不明白为什么编译失败

题目总版参与者 2已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@m270f422
此快照首次捕获于
2024/10/13 11:12
去年
此快照最后确认于
2025/11/04 17:19
4 个月前
查看原帖
小明今年得到了一个好玩的生日礼物————遥控机器人。这个机器人可以接受四种指令:
N:表示向北走一步
S:表示向南走一步
E:表示向东走一步
W:表示向西走一步
现在小明把机器人放在一个迷宫中,然后向机器人发送指令。一般情况下,机器人会严格按照指示一步步运动。但是在迷宫中有很多障碍物。如果机器人发现下一个指令会让它撞上障碍物,那么它就会忽视这个指令而停在原地。现在给定迷宫的地图(包含所有障碍物的位置以及机器人的起始位置)以及小明发出的指令,你要求出最后机器人的位置。
输入 第一行包含两个数R和C,(1≤R≤50,1≤C≤50)表示迷宫由R行C列组成
接下来R行,每行包含C的字符,表示一个迷宫的情况。
其中“.”表示空地,“#”表示障碍物,“*”表示机器人的起始位置。
接下来一行,包含一个由“NESW”四个字母组成的字符串,表示小明发出的一串指令,字符串的长度不超过50。
输出 两行,每行各有一个数,设这两个数分别为a、b,表示机器人最终停在第a行第b列。
CPP
#include<bits/stdc++.h>
using namespace std;
int main()
{
	freopen("robot.in","r",stdin);
	freopen("robot.out","w",stdin);
    string t;
    char s[1000][1000];
    int x=1,y=1,r,c;
    cin>>r>>c;
    for(int i=1;i<=r;i++){
        for(int j=1;j<=c;j++){
            cin>>s[i][j];
            if(s[i][j]=='*')x=i,y=j;
        }   
    }
    cin>>t;
    for(int k=0;k<strlen(t);k++)
    {
        for(int i=1;i<=r;i++){
            for(int j=1;j<=c;j++){
                if(t[k]=='N'&&s[i-1][j]!='#') x-=1;
                if(t[k]=='S'&&s[i+1][j]!='#') x+=1;
                if(t[k]=='W'&&s[i][j-1]!='#') y-=1;
                if(t[k]=='E'&&s[i][j+1]!='#') y+=1;
            }
        }
    }
    cout<<x<<" "<<y;
}

回复

4 条回复,欢迎继续交流。

正在加载回复...