描述:自从xiao_wu 发明了只能向左转与向右转的机器人以后,热血沸腾的他又给机器人加了一个操作。假设机器人在二维坐标系的原点,一开始面向Y 轴正方向(北N),现在给你一个仅由’L’,’R’,’M’的串,其中L 表示向左转,R 表示向右转,M 表示向所面对的方向走一个单位的距离,试问经过操作过后,机器人的坐标和所面对的方向。
北(N),西(W),东(E),南(S)。
输入输出要求:
Input
第一行输入一个T(T<150),表示任务的个数
对于每个任务,输入一个串。(每个任务开始前机器人在原点,面向北(N),
既Y 轴正方向)
串长度不大于100
Output
对于每个任务,输出两个数表示机器人的坐标,一个字符表示机器人的面朝的方向。
输入输出样例:
Sample Input
2
LRMLL
LMRMMLLL
Sample Output
0 1 S
-1 2 E
解题思路:模拟……
代码:
#include<iostream>
#include<cstring>
#include<string>
using namespace std;
int main()
{
stringstr;
intT;
cin>>T;
while(T--)
{
cin>>str;
charD='N';
inti=0;
intx=0;
inty=0;
while(str[i]!='\0')
{
if(str[i]=='L')
{
if(D=='N')
D='W';
elseif(D=='W')
D='S';
elseif(D=='S')
D='E';
elseif(D=='E')
D='N';
}
if(str[i]=='R')
{
if(D=='N')
D='E';
elseif(D=='E')
D='S';
elseif(D=='S')
D='W';
elseif(D=='W')
D='N';
}
if(str[i]=='M')
{
if(D=='N')
y++;
elseif(D=='E')
x++;
elseif(D=='S')
y--;
elseif(D=='W')
x--;
}
i++;
}
cout<<x<<""<<y<<" "<<D<<endl;
}
return0;
}
解题感想:这题很简单,没啥好说的。