题解 P1322 【logo语言】

摆明的递归题目,先来看看解题思路

首先while读入char类型的ch

如果是]那么就break

如果是T就读入空格然后再构造char类型的字符和string的字符串,每次读入一直到[停止读入,并且随时将字符串加上这个字符,再递归结果乘以这个字符串转成数字的结果

另外的前进后退就简单了

代码,20ms,616.00KB,代码长度945B,C++11 O2

#include <iostream>
#include <cmath>
#include <cstdio>
using namespace std;

int cl()
{
    int ans = 0;
    char s;
    while(scanf("%c", &s) != EOF)
    {
        if(s == ']')
        {
            break;
        }
        else if(s == 'T')
        {
            scanf(" ");
            char a;
            string s;
            while(scanf("%c", &a))
            {
                if(a == '[')
                {
                    break;
                }
                s += a;
            }
            ans += stoi(s) * cl();
        }
        else if(s == 'D')
        {
            scanf(" ");
            int a;
            cin >> a;
            ans += a;
        }
        else if(s == 'K')
        {
            scanf(" ");
            int x;
            cin >> x;
            ans -= x;
        }
    }
    return ans;
}

int main()
{
    cout << abs(cl()) << endl;
    return 0;
}
posted @   HappyBobb  阅读(10)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示