ACM_机器人II

来源:互联网 发布:哑铃品牌知乎 编辑:程序博客网 时间:2024/06/05 08:21


                               机器人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 
输出
对于每个任务,输出两个数表示机器人的坐标,一个字符表示机器人的面朝的方向。
样例输入
2LRMLLLMRMMLLL
样例输出
0 1 S-1 2 E

//这个代码效率低,但是思路明确

#include<iostream>
using namespace std;
int main(){
 int n,x,y,sum;
 string a;
 char A='N';
 cin>>n;//line
 while(n-->0){
  cin>>a;
  x=0,y=0,sum=0;
  for(int i=0;i<a.length();i++){
   if(a[i]=='L'){
     sum--;
     if(sum<0){
      sum+=4;
     }
   }
   if(a[i]=='R'){
     sum++;
   }
   if(a[i]=='M'){
     if(sum%4==3){
      x--;
    }
    if(sum%4==2){
     y--;
    }
    if(sum%4==1){
     x++;
    }
    if(sum%4==0){
     y++;
    }
   }
  }
  if(sum%4==3)
   A='W';
  if(sum%4==2)
   A='S';
  if(sum%4==1)
   A='E';
  if(sum%4==0)
   A='N';

  cout<<x<<" "<<y<<" "<<A<<endl; 
  
 }
}

原创粉丝点击