机器人II
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
1
-
描述
-
自从xiao_wu发明了只能向左转与向右转的机器人以后,热血沸腾的他又给机器人加了一个操作。假设机器人在二维坐标系的原点,一开始面向Y轴正方向(北N),现在给你一个仅由’L’,’R’,’M’的串,其中L表示向左转,R表示向右转,M表示向所面对的方向走一个单位的距离,试问经过操作过后,机器人的坐标和所面对的方向。
北(N),西(W),东(E),南(S)。
-
输入
-
第一行输入一个T(T<150),表示任务的个数
对于每个任务,输入一个串。(每个任务开始前机器人在原点,面向北(N),既Y轴正方向)
串长度不大于100
输出
- 对于每个任务,输出两个数表示机器人的坐标,一个字符表示机器人的面朝的方向。 样例输入
-
2 LRMLL LMRMMLLL
样例输出
-
0 1 S -1 2 E
来源
- GDUT校赛 上传者
思路:将北 东 南 西 分别用数字0 1 2 3 表示出来 再 利用dir=0向左时候(dir-1+4)%4 右边(dir+1)%4 这是为了确定方向
再利用dir的值
模拟坐标系0向北 y++ 1向东x++ 2向南y-- 3向西x++
#include<stdio.h> #include<string.h> int main() { int t; scanf("%d",&t); char a[4]={'N','E','S','W'},s[101]; while(~scanf("%s",s)) { int l,dir=0,x=0,y=0; l=strlen(s); for(int i=0;i<l;i++) { if(s[i]=='L') dir=(dir+3)%4; if(s[i]=='R') dir=(dir+1)%4; if(s[i]=='M') { if(dir==0) y++; if(dir==1) x++; if(dir==2) y--; if(dir==3) x--; } } printf("%d %d %c\n",x,y,a[dir]); } return 0; }
-
第一行输入一个T(T<150),表示任务的个数