1. 程式人生 > >【UVA】1596 Bug Hunt(模擬)

【UVA】1596 Bug Hunt(模擬)

num com pan dig 分析 bit i++ cnblogs main

題目

題目
?


?

分析

算是個模擬吧
?


?

代碼

#include <bits/stdc++.h>
using namespace std;
map<int,int> a[130];
char s[85];
int n[130];
int PosIs()
{
    int len=strlen(s);
    for(int i=0;i<len;i++)
        if(s[i]=='=') return i;
    return -1;
}
int get_num(int k)
{
    int res=0;
    if(isalpha(s[k]))
    {
        int
t=get_num(k+2); if(t<0|| t>=n[s[k]] || !a[s[k]].count(t)) res=-1; else res=a[s[k]][t]; } for(int i=k;isdigit(s[i]);i++) { if(i==k && s[i]=='0' && isalpha(s[i+1])) { res=-1; break; } res=res*10
+s[i]-'0'; } return res; } int main() { int res=0; while(scanf("%s",s) && s[0]!='.') { int ans=0,cnt=0; for(int i=0;i<130;i++) a[i].clear(); do { if(ans) continue; cnt++; int k=PosIs(); if
(k<0) { int t=get_num(2); if(t<0){ans=cnt; continue;} n[s[0]]=t; } else { int t1=get_num(2); if(t1<0||t1>=n[s[0]]) {ans=cnt;continue;} int t2=get_num(k+1); if(t2<0) {ans=cnt;continue;} a[s[0]][t1]=t2; } }while(scanf("%s",s) && s[0]!='.'); printf("%d\n",ans); } return 0; }

【UVA】1596 Bug Hunt(模擬)