社区讨论
站外题求助,不明白为什么编译失败
题目总版参与者 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 条回复,欢迎继续交流。
正在加载回复...