• 机器人


    蒜头君收到了一份礼物,是一个最新版的机器人。这个机器人有 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
    ",x)
    22 #define Prl(x) printf("%I64d
    ",x)
    23 #define Prc(c) printf("%c
    ",c)
    24 #define Prs(s) printf("%s
    ",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!

  • 相关阅读:
    06C++11线程池
    05C++11生产者消费者模式2
    04C++11生产者消费者模式
    03智能指针之shared_ptr
    洛谷P1262+Tarjan缩点
    洛谷P1147 连续自然数和
    洛谷P1970 花匠
    接下来的一些操作
    树状数组 代码(洛谷为例)
    洛谷P1576 最小花费
  • 原文地址:https://www.cnblogs.com/hbhdhd/p/11503491.html
Copyright © 2020-2023  润新知