1 条题解

  • 0
    @ 2025-8-24 21:42:04

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar 1124828077ccj
    **

    搬运于2025-08-24 21:42:04,当前版本为作者最后更新于2016-08-25 20:33:34,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    疯狂模拟,注意细节处理,判断变量嵌套的时候可以用递归完成,顺便判断是否合法

    附上代码(函数名是我的名字哦,所以别抄代码哈)

    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<iostream>
    #include<string>
    using namespace std;
    char s[100][100],a[100],b[100],t[100];
    int l[100],p[100][100],y,w,ww,h,hh;
    int ccj(string r,int x,int yy){
        if (r[x]>='0' && r[x]<='9')
        {
            int uuu=0;
            for (int i=x;i<=yy;i++)
            uuu=uuu*10+r[i]-'0';
            return uuu;
        }
        int www,e;
        char m[100];
        for (int i=0;i<100;i++)
        m[i]='\0';
        for (int i=x;r[i]!='[';i++,www=i)
        m[i-x]=r[i];
        for (int i=0;i<y;i++)
        if (!strcmp(m,s[i])){e=i;break;}
        int j=ccj(r,www+1,yy-1);
        if (j==-1 || j>=l[e])return -1;
        return p[e][j];
    }
    int main()
    {
        while(scanf("%s%s",a,b)==2)
        {
            if (!strcmp(a,"int"))
            {
                for (int i=0;b[i]!='[';i++,w=i)
                s[y][i]=b[i];h=ccj(b,w+1,strlen(b)-2);
                if (h==-1){printf("-1");return 0;}
                l[y++]=h;
            }
            else if (!strcmp(a,"cout"))
            {
                h=ccj(b,0,strlen(b)-1);
                if (h==-1){printf("-1");return 0;}
                printf("%d\n",h);
            }
            else
            {
                for (int i=0;i<100;i++)
                t[i]='\0';
                for (int i=0;a[i]!='[';i++,w=i)
                t[i]=a[i];
                for (int i=0;i<y;i++)
                if (!strcmp(t,s[i])){ww=i;break;}
                h=ccj(a,w+1,strlen(a)-2);
                if (h==-1 || h>=l[ww]){printf("-1");return 0;}
                hh=ccj(b,0,strlen(b)-1);
                if (hh==-1){printf("-1");return 0;}
                p[ww][h]=hh;
            }
        }
        return 0;
    }
    
    • 1

    信息

    ID
    1881
    时间
    1000ms
    内存
    125MiB
    难度
    4
    标签
    递交数
    0
    已通过
    0
    上传者