XTU1227 ROBOT

来源:互联网 发布:下载相片制作软件 编辑:程序博客网 时间:2024/05/22 10:46

题目描述

假设在一个XOY坐标的平面上,机器人一开始位于原点,面向Y轴正方向。机器人可以执行向左转,向右转,向后转,前进四个指令。指令为 

LEFT:向左转 
RIGHT:向右转 
BACK:向后转 
FORWORD n:向前走n(1≤n≤100)个单位 
现在给你一个指令序列,求机器人最终的位置。 
输入
样例的第一行是一个整数T(T≤20),表示样例的个数。每个样例的第一行是一个整数N(1≤N≤1,000),表示指令的条数。以后的N行,每行一条指令。 
输出
每个样例输出两个整数,为坐标(x,y),之间用空格隔开。 
样例输入
2
4
LEFT
FORWORD 1
RIGHT
FORWORD 1
2
BACK
FORWORD 2
样例输出
-1 1

0 -1

解题思路

模拟,用一个数组表示4个方向,输入指令后,对应方向的值发生变化。

AC代码:

#include<bits/stdc++.h>using namespace std;int main(){int t,n;scanf("%d",&t);char s[9];int x,y;while(t--){scanf("%d",&n);int a[4]={0,0,0,0};//四个方向int z=0;int l;for(int i=0;i<n;i++){scanf("%s",s);if(s[0]=='L') z=(z+3)%4;else if(s[0]=='R') z=(z+1)%4;else if(s[0]=='B') z=(z+2)%4;else if(s[0]=='F'){scanf("%d",&l);a[z]+=l;}}x=a[1]-a[3];    y=a[0]-a[2];printf("%d %d\n",x,y);}return 0;}