WA 90分 求助

P1575 正误问题

[最后一组数据](https://www.luogu.com.cn/paste/ypu5m8vp)
by cjlak1o1 @ 2022-08-18 10:44:23


@[cjlak1o1](/user/557385) true or false它输出false
by sunxiaoli @ 2022-08-18 11:05:05


```cpp #include<bits/stdc++.h> using namespace std; string s[100]; int n=1; void f(int k) { for(int i=k;i<n;i++) s[i]=s[i+1]; s[n]=""; } int main() { while(cin>>s[n]) n++; n--; //cout<<n; if(s[1]=="and"||s[1]=="or"||s[n]=="and"||s[n]=="or"||s[n]=="not") return cout<<"error"<<endl,0; for(int i=1;i<=n;i++) { for(int j=1;j<i;j++) if(s[j]=="not") { i=j; break; } if(s[i]=="not") { for(int j=i+1;j<=n;j++) { if(s[j]=="true") { s[j]="false"; s[i]=""; f(i); break; } else if(s[j]=="false") { s[j]="true"; s[i]=""; f(i); break; } else if(s[j]=="not") { s[j]=s[i]=""; f(j); f(i); /*for(int k=1;k<=n;k++) cout<<s[k]<<" "; cout<<endl;*/ break; } else return cout<<"error"<<endl,0; } } } for(int i=1;i<=n;i++) { for(int j=1;j<i;j++) if(s[j]=="and") { i=j; break; } if(s[i]=="and") { if(s[i-1]=="true") { if(s[i+1]=="true") { s[i-1]=s[i]=""; s[i+1]="true"; f(i-1); f(i-1); } else if(s[i+1]=="false") { s[i-1]=s[i]=""; s[i+1]="false"; f(i-1); f(i-1); // cout<<s[i-1]<<endl; } else return cout<<"error"<<endl,0; } else if(s[i-1]=="false") { if(s[i+1]=="true"||s[i+1]=="false") { s[i-1]=s[i]=""; s[i+1]="false"; f(i-1); f(i-1); } else return cout<<"error"<<endl,0; } else return cout<<"error"<<endl,0; } } for(int i=1;i<=n;i++) { for(int j=1;j<i;j++) if(s[j]=="or") { i=j; break; } if(s[i]=="or") { if(s[i-1]=="true") { if(s[i+1]=="true") { s[i-1]=s[i]=""; s[i+1]="true"; f(i-1); f(i-1); } else if(s[i+1]=="false") { s[i-1]=s[i]=""; s[i+1]="true"; f(i-1); f(i-1); } else return cout<<"error"<<endl,0; } else if(s[i-1]=="false") { if(s[i+1]=="true") { s[i-1]=s[i]=""; s[i+1]="true"; f(i-1); f(i-1); } else if(s[i+1]=="false") { s[i-1]=s[i]=""; s[i+1]="false"; f(i-1); f(i-1); } else return cout<<"error"<<endl,0; } else return cout<<"error"<<endl,0; } } //for(int i=1;i<=n;i++) cout<<s[i]<<" "; map<string,int> m; for(int i=1;i<=n;i++) m[s[i]]++; if(m.empty()) return cout<<"error"<<endl,0; if(m["true"]>1||m["false"]>1||(m["true"]>=1&&m["false"]>=1)) return cout<<"error"<<endl,0; if(m["true"]==1) cout<<"true"; else cout<<"false"; return 0; } ```
by cjlak1o1 @ 2022-08-18 11:18:20


调完了,AC代码
by cjlak1o1 @ 2022-08-18 11:18:45


@[bbbzzx](/user/372498) 您计算 or 的时候少了一个else
by cjlak1o1 @ 2022-08-18 11:19:43


@[bbbzzx](/user/372498) 什么玄学问题,不做了,用Python做好了
by sunxiaoli @ 2022-08-18 11:25:00


|