为什么我以前写的代码能过,但刚才写的代码几乎一模一样但是过不了啊,看了好久看不出来,有没有大佬能帮忙看一下
//现在的
#include<bits/stdc++.h>
using namespace std;
string s;
int len;
int ans1,ans2,off;
bool val;
int main(){
cin>>s;
len=s.length();
for(int i=0;i<len;i++){
if(off){
if(s[i]=='('){
int x=1;
while(x){
i++;
if(s[i]=='('){
x++;
}
if(s[i]==')'){
x--;
}
}
}
else if(off=1&&s[i]=='|'){
off=0;
}
else if(s[i]==')'){
off=0;
}
else if(off=1&&s[i]=='&'){
ans1++;
}
else if(off=2&&s[i]=='|'){
ans2++;
}
}
else{
if(s[i]=='1'){
val=1;
}
if(s[i]=='0'){
val=0;
}
if(s[i]=='&'&&val==0){
off=1;
ans1++;
}
if(s[i]=='|'&&val==1){
off=2;
ans2++;
}
}
}
cout<<val<<'\n'<<ans1<<' '<<ans2<<'\n';
return 0;
}
//以前的
#include<bits/stdc++.h>
using namespace std;
int off;
int val;
int ans1,ans2;
int main(){
string s;
cin>>s;
int len=s.length();
for(int i=0;i<len;i++){
if(off){
if(s[i]=='('){
int l=1;
while(l){
i++;
if(s[i]=='(')l++;
if(s[i]==')')l--;
}
}
else if(off==1&&s[i]=='|')off=0;
else if(s[i]==')')off=0;
else if(off==1&&s[i]=='&')ans1++;
else if(off==2&&s[i]=='|')ans2++;
}
else{
if(s[i]=='1')val=1;
if(s[i]=='0')val=0;
if(s[i]=='&'&&val==0){
off=1;
ans1++;
}
if(s[i]=='|'&&val==1){
off=2;
ans2++;
}
}
}
cout<<val<<endl;
cout<<ans1<<" "<<ans2;
return 0;
}