Advertisement

上海市计算机学会竞赛平台2022年2月月赛丙组海龟作图

阅读量:

二维平面上有一只海龟,一开始,海龟面向X轴正方向,位于坐标原点 (0,0)。接下来,海龟接受一连串命令,每个命令可以用一个大写字母表示:

  • R 表示海龟沿顺时针旋转90度;
  • L 表示海龟沿逆时针旋转90度;
  • F 表示海龟沿当前方向前进一个单元;
  • B 表示海龟沿当前方向后退一个单元。

请求出结束时,海龟的位置坐标。

输入格式
  • 单个字符串:表示海龟的移动指令
输出格式
  • 两个整数:表示海龟的坐标
数据范围
  • 字符数量不超过 100000100000
样例数据

输入:

FFF

输出:

3 0

说明:

(0,0)->(1,0)->(2,0)->(3,0)

输入:

LFF

输出:

0 2

说明:

(0,0)->(0,0)->(0,1)->(0,2)

输入:

FBLR

输出:

0 0

详见代码:

复制代码
 #include <bits/stdc++.h>

    
 using namespace std;
    
 string a;
    
 int fx[] = {1, 0, -1, 0};
    
 int fy[] = {0, -1, 0, 1};
    
 int main()
    
  {
    
     cin >> a;
    
     int f = 0;
    
     int x = 0;
    
     int y = 0;
    
     int len;
    
     len = a.length();
    
     for (int i = 0; i < len; i++)
    
     {
    
     if (a[i] == 'R') 
    
     {
    
         f++;
    
         f %= 4;
    
     } 
    
     else if (a[i] == 'L') 
    
     {
    
         f--;
    
         if (f < 0) f += 4;
    
     } 
    
     else if (a[i] == 'F')
    
     {
    
         x += fx[f];
    
         y += fy[f];
    
     } 
    
     else if (a[i] == 'B')
    
     {
    
         x -= fx[f];
    
         y 
    
    
    
    

全部评论 (0)

还没有任何评论哟~