20130712 【南华大学 ACM】 新生赛第四场 【E. 机器人II】

Problem E: 机器人II
Time Limit: 1 Sec Memory Limit: 128 MB

Description
自从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




----------------------------------------------------------------
解题报告:


  1. 此题很直接,就是判断方向时很麻烦(4方向分情况讨论?还是打算存储后处理?)
  2. 我的使用的方法是:以0,1,2,3定为东南西北(way=0,1,2,3);
  3. 那么左转的方向则是:way=(way+3)%4;
  4. 【本是:way=(way-1)%4,但东向左转时,该式为:way=(0-1)%4,显然不符合】
  5. 右转的方向为:way=(way+1)%4;(如下图:)
  6. 于是,代码如下:



----------------------------------------------------------------

代码:

#include<stdio.h>
#include<string.h>
int x,y;
char WAY[5]="ESWN";
int main(){
	int T,len,way,i;		//0 1 2 3
	char ch,c[105];
	scanf("%d",&T);
	while( T-- ){
		x=y=0;		way=3;
		scanf(" %s",c);
		for(i=0; c[i] ;i++){
			if( 'L'==c[i] )			way=(way+3)%4;
			else if( 'R'==c[i] )		way=(way+1)%4;
			else{
				if( 0==way )			x++;
				else if( 1==way )		y--;
				else if( 2==way )		x--;
				else					y++;
			}
		}
		printf("%d %d %c\n",x,y,WAY[way]);
	}
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值