求助,玄关
  • 板块灌水区
  • 楼主liujixuan2010118
  • 当前回复13
  • 已保存回复13
  • 发布时间2024/8/15 10:12
  • 上次更新2024/8/15 12:18:15
查看原帖
求助,玄关
910440
liujixuan2010118楼主2024/8/15 10:12

为什么我以前写的代码能过,但刚才写的代码几乎一模一样但是过不了啊,看了好久看不出来,有没有大佬能帮忙看一下

//现在的
#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;
}
2024/8/15 10:12
加载中...