机器人

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

forward x,前进 xx 米。 

back x,先向后转,然后前进 xx 米。 

left x,先向左转,然后前进 xx 米。
right x,先向右转,然后前进 xx 米。
现在把机器人放在坐标轴原点,起始朝向为 xx 轴正方向。经过一系列指令以后,你能告诉蒜头君机器人的坐标位置吗。坐标轴上一个单位长度表示 11 米。

输入格式
第一行输入一个整数 n(1 \le n \le 100)n(1≤n≤100) 表示指令的个数。

接下里 nn 行,每行输入形如上面的指令,其中 -1000 \le x \le 1000−1000≤x≤1000。

输出格式
输出两个整数 x,yx,y 表示机器人最后坐标。用空格隔开。

样例输入
10
back -9
left 3
left 8
back 15
right 10
right -7
right -3
left 11
right 17
left 3
样例输出
9 -7
题意:???注意机器人的初始朝向是x轴,机器人的移动的前后左右是相对它的朝向的,所有它的前后左右每次转弯都会改变!!!

代码网上看的,有点意思^-^.

 1 #include <map>
 2 #include <stack>
 3 #include <queue>
 4 #include <cmath>
 5 #include <string>
 6 #include <limits>
 7 #include <cstdio>
 8 #include <vector>
 9 #include <cstdlib>
10 #include <cstring>
11 #include <iostream>
12 #include <algorithm>
13 #define Scc(c) scanf("%c",&c)
14 #define Scs(s) scanf("%s",s)
15 #define Sci(x) scanf("%d",&x)
16 #define Sci2(x, y) scanf("%d%d",&x,&y)
17 #define Sci3(x, y, z) scanf("%d%d%d",&x,&y,&z)
18 #define Scl(x) scanf("%I64d",&x)
19 #define Scl2(x, y) scanf("%I64d%I64d",&x,&y)
20 #define Scl3(x, y, z) scanf("%I64d%I64d%I64d",&x,&y,&z)
21 #define Pri(x) printf("%d\n",x)
22 #define Prl(x) printf("%I64d\n",x)
23 #define Prc(c) printf("%c\n",c)
24 #define Prs(s) printf("%s\n",s)
25 #define For(i,x,y) for(int i=x;i<y;i++)
26 #define For_(i,x,y) for(int i=x;i<=y;i++)
27 #define FFor(i,x,y) for(int i=x;i>y;i--)
28 #define FFor_(i,x,y) for(int i=x;i>=y;i--)
29 #define Mem(f, x) memset(f,x,sizeof(f))
30 #define LL long long
31 #define ULL unsigned long long
32 #define MAXSIZE 505
33 #define INF 0x3f3f3f3f
34 
35 const int mod=1e9+7;
36 const double PI = acos(-1.0);
37 
38 using namespace std;
39 int main()
40 {
41     int n;
42     cin>>n;
43     int x=0,y=0;
44     int head=0;
45     char s[10];
46     int  temp;
47     while(n--)
48     {
49         cin>>s>>temp;
50         if(s[0]=='f')
51         head%=4;
52         else if(s[0]=='l')
53             head=(head+1)%4;
54         else if(s[0]=='b')
55             head=(head+2)%4;
56         else if(s[0]=='r')
57             head=(head+3)%4;
58 //我这种0 1 2 3 分别代表相对x轴的前 左 后 右
59         if(head==0)
60             x+=temp;
61         else if(head==1)
62             y+=temp;
63         else if(head==2)
64         x-=temp;
65         else
66             y-=temp;
67         }
68         cout<<x<<" "<<y;
69     return 0;
70 }
C++

Fighting!

posted @ 2019-09-10 22:25  hbhdhd  阅读(272)  评论(0编辑  收藏  举报