机器人

蒜头君收到了一份礼物,是一个最新版的机器人。这个机器人有4种指令:

  1. forward x,前进x米。
  2. back x,先后左转,然后前进x米。
  3. left x,先向左转,然后前进x 米。
  4. right x,先向右转,然后前进x米。
    现在把机器人放在坐标轴原点,起始朝向为x轴正方向。经过一系列指令以后,你能告诉蒜头军机器人的坐标位置吗。坐标轴上一个单位长度表示1米。
    在这里插入图片描述
    输入格式
    第一行输入一个整数n(1<=n<=100)表示指令的个数。
    接下来n行,每行输入形如上面的指令,其中-1000<=x<=1000。
    输出格式
    输出两个整数x,y,表示机器人最后坐标。用空格隔开。
    样例输入
10
back -9
left 3
left 8
back 15
right -7
tight -3
left 11
right 17
left 3

样例输出

9 -7

题解
代码:

#include<iostream>
using namespace std;
int x = 0,y = 0; // x y 轴坐标 
//朝向,当值为 1 即朝向方面,起始朝右 
int u = 0;    // 上,即 y 轴正半轴 
int d = 0;    // 下,即 y 轴负半轴 
int l = 0;    // 左,即 x 轴负半轴 
int r = 1;    // 右,即 x 轴正半轴 
// 前进 step 步 
void move(int step){ 
	if(u)  // 如果是朝上 
		y += step; 
	else if(d) // 下 
		y -= step; 
	else if(l)
	    x -= step;
	else if(r)
		x += step;
}
int main(){
	int n; 
	string in;
	int step;
	cin>>n;
	while(n--){
		cin>>in>>step;
		if(in == "back"){ // 向后转的指令 
			if(u){  // 如果现在是向上,改为向下 
				u = 0;
				d = 1; 
			}else if(d){  // 
				d = 0;
				u = 1;
			}else if(l){
				l = 0;
				r = 1;
			}else if(r){
				r = 0;
				l = 1;
			}
		}else if(in == "left"){  // 向左转 
			if(u){  // 如果现在是向上,改为向左 
				u = 0;
				l = 1;
			}else if(d){
				d = 0;
				r = 1;
			}else if(l){
				l = 0;
				d = 1;
			}else if(r){
				r = 0;
				u = 1;
			}
		}else if(in == "right"){  // 向右转 
			if(u){  // 如果现在是向上,改为向右 
				u = 0;
				r = 1;
			}else if(d){
				d = 0;
				l = 1;
			}else if(l){
				l = 0;
				u = 1;
			}else if(r){
				r = 0;
				d = 1;
			}
		}
		// 移动 
		move(step);
	}
	cout<<x<<" "<<y;
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值