洛谷P1322 logo语言

题目描述

Logo 语言命令可以指挥海龟在屏幕中爬行。本问题只使用 Logo 语言的三个语句:前进 FD,倒退 BK 和重复 REPEAT,因此,海龟只在一条直线上来回爬行。输入一行 logo 的命令行,输出海龟在屏幕中离开原来位子的距离(假设屏幕很大,可以让海龟移开 1000000010000000 的距离)。

例如:

  • 输入 FD 100 ,输出:100100。

  • 输入 FD 100 BK 150, 输出:5050。

  • 输入 REPEAT 5[FD 100 BK 50], 输出:250250。

  • 输入 REPEAT 5[ FD 50 REPEAT 10[FD 100]], 输出:52505250。

输入格式

一行,一个字符串,符合上述规定的 logo 命令行。(长度不超过 254254)

输出格式

一个数据,海龟离开原来位子的距离。

输入输出样例

输入 #1复制

FD 100

输出 #1复制

100

#include<bits/stdc++.h>
using namespace std;
int dg()
{
    string s;
    char c;
    int k,l=0,v;
    while (cin>>c)//回车+^z自动结束输入.
    {
        if (c==']') break;//特判像"REPEAT 1[] BK 1"这样的情况,不然只有90.
        cin>>s>>k;
        if (c=='R') 
        {
            v=getchar();//读'['.
            l+=k*dg();
            v=getchar();//读']'后' '.
        }
        if (c=='B') v=getchar(),l-=k;
        if (c=='F') v=getchar(),l+=k;
        if (v==int(']')) break;//如果v==int(' ')就一直读
    }
    return l;//这里就不必多说了
}
int main()
{
    cout<<abs(dg());//巨短主函数
    return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值