首页 > 代码库 > 机器人II

机器人II

 1 /*机器人II
 2 时间限制:1000 ms  |  内存限制:65535 KB
 3 难度:1
 4 描述
 5 自从xiao_wu发明了只能向左转与向右转的机器人以后,热血沸腾的他又给机器人加了一个操作。假设机器人在二维坐标系的原点,
 6 一开始面向Y轴正方向(北N),现在给你一个仅由’L’,’R’,’M’的串,其中L表示向左转,R表示向右转,M表示向所面对的方向走一个单位的距离,
 7 试问经过操作过后,机器人的坐标和所面对的方向。
 8 北(N),西(W),东(E),南(S)。
 9 输入
10 第一行输入一个T(T<150),表示任务的个数 
11 对于每个任务,输入一个串。(每个任务开始前机器人在原点,面向北(N),既Y轴正方向) 
12 串长度不大于100 
13 输出
14 对于每个任务,输出两个数表示机器人的坐标,一个字符表示机器人的面朝的方向。
15 样例输入
16 2
17 LRMLL
18 LMRMMLLL
19 样例输出
20 0 1 S
21 -1 2 E
22 来源
23 GDUT校赛
24 上传者
25 ACM_李如兵
26 */
27 #include<stdio.h>
28 #include<string.h>
29 int main()
30 {
31     int x, y, t, n;
32     char drict, s[101];
33     scanf("%d", &t);
34     while(t--)
35     {
36         x = y = 0;
37         drict = N;
38         scanf("%s", s);
39         n = strlen (s);
40         int i;
41         for( i = 0; i< n; i++)
42         {
43             if( drict == N)
44             {
45                 if(s[i] == L)
46                     drict = W;
47                 else if( s[i] == R)
48                     drict = E;
49                 else 
50                 y++;
51             }
52             else if( drict == S)
53             {
54                 if(s[i] == L)
55                     drict = E;
56                 else if( s[i] == R)
57                     drict = W;
58                 else 
59                     y--;
60             }
61             else if( drict == W)
62             {
63                 if(s[i] == L)
64                     drict = S;
65                 else if( s[i] == R)
66                     drict = N;
67                 else 
68                     x--;
69             }
70             else
71             {
72                 if(s[i] == L)
73                     drict = N;
74                 else if( s[i] == R)
75                     drict = S;
76                 else 
77                     x++;
78             }
79         }
80         printf("%d %d %c\n", x, y, drict);
81     }
82     return 0;
83 }