有一份礼物,是一个最新版的机器人。这个机器人有4种指令:
1. forwardx,前进x米。
2. backx,先向后转,然后前进x米。
3. leftx,先向左转,然后前进x米。
4. rightx,先向右转,然后前进x米。
现在把机器人放在坐标轴原点,起始朝向为工轴正方向。经过一系列指令以后,你能告诉机器人的坐标位置吗。坐标轴上一个单位长度表示1米。
输入格式
第一行输入一个整数n(1 S n≤100)表示指令的个数。接下里n行,每行输入形如上面的指令,其中
- 1000<=x<= 1000.
输出格式
输出两个整数a, y表示机器人最后坐标。用空格隔开。
注意:决定机器人最后往哪个方向走,与机器人当前的朝向有关,事先规定好方向基准。
#include <iostream>
#include <algorithm>
using namespace std;
int dx[4]={0,-1,0,1};//规定好方向,比如dx[0],dy[0]合起来表示向上走
int dy[4]={1,0,-1,0};//逆时针方向,上左下右。
char op[15];
int main()
{
int n,d,x,nowx,nowy;
cin>>n;
d=3;//d是方向数组的下标,一开始的是左(x的正半轴),所以是3;
nowx=0;
nowy=0;
for(int i=0;i<n;i++){ //以3为基准,通过d的加减,进行方向的改变,共4个方向(4是一个循环)
cin>>op>>x;
if(op[0]=='b'){ //不用对比整个单词,对比每个方向单词的首字母就可以
d=(d+2)%4;
}else if(op[0]=='l'){
d=(d+1)%4;
}else if(op[0]=='r'){
d=(d+3)%4;
}
nowx+=dx[d]*x;
nowy+=dy[d]*x;
}
cout<<nowx<<" "<<nowy;
return 0;
}