1 条题解
-
0
自动搬运
来自洛谷,原作者为

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
- 上传者