在这道题的完整代码中有如下片段:
if(s[pos]=='1'){
a[pos].ls=build(pos,pos+a[pos].size);
a[pos].size+=a[a[pos].ls].size;
}
else if(s[pos]=='2'){
a[pos].rs=build(pos,pos+a[pos].size);
a[pos].size+=a[a[pos].rs].size;
}
else if(s[pos]=='3'){
a[pos].ls=build(pos,pos+a[pos].size);
a[pos].size+=a[a[pos].ls].size;
a[pos].rs=build(pos,pos+a[pos].size);
a[pos].size+=a[a[pos].rs].size;
}
这是 AC的。
但将其替换为:
switch(s[pos]){
case '1':
a[pos].ls=build(pos,pos+a[pos].size);
a[pos].size+=a[a[pos].ls].size;
break;
case '2':
a[pos].rs=build(pos,pos+a[pos].size);
a[pos].size+=a[a[pos].rs].size;
break;
case '3':
a[pos].ls=build(pos,pos+a[pos].size);
a[pos].size+=a[a[pos].ls].size;
a[pos].rs=build(pos,pos+a[pos].size);
a[pos].size+=a[a[pos].rs].size;
break;
default: return -1;
}
开O2:WA ;
不开O2:RE。
So,Why?