Subtask #1第二、第四点WA求助
查看原帖
Subtask #1第二、第四点WA求助
468960
zhangzehao楼主2022/10/22 13:21

代码如下:

#include<bits/stdc++.h>
using namespace std;
char a[9999999],b[9999999];
long long len;
bool t=0,u=0,s=0;
bool error(string b,long long l){
	long long ts=0,fs=0;
	for(long long i=0;i<l;i++){
		if(b[i]=='t')ts++;
		if(b[i]=='f')fs++;
	}
	if(ts==0&&fs==0)return 0;
    if(b[l-1]=='o'||b[l-1]=='a')return 0;
	for(long long i=1;i<l;i++){
		if((b[i]=='n'&&(b[i+1]=='a'||b[i+1]=='o'))||((b[i]=='a'||b[i]=='o')&&(b[i+1]=='a'||b[i+1]=='o'||(b[i-1]=='a'||b[i-1]=='o')))){
			return 0;
		}
	}
	return 1;
}
void cnot(){
	for(long long i=0;i<len;i++){
		if(b[i]=='n'){
			long long w=1;
			while(b[i]!='n'){
				w++;
				i++;
			}
			if(w%2==0)b[i]=' ';
			else{
				b[i]=' ';
				if(b[i+1]=='f')b[i+1]='t';
				else if(b[i+1]=='t')b[i+1]='f';
			}
		}
	}
}
void cand(){
	for(long long i=0;i<len;i++){
		if(b[i]=='a'){
			b[i]=' ';
			char q,h;
			int j,k;
			for(j=i;;j++){
				if(b[j]=='f'||b[j]=='t'){
					h=b[j];
					break;
				}
			}
			for(k=i;;k--){
				if(b[k]=='f'||b[k]=='t'){
					q=b[k];
					break;
				}
			}
			if(q=='f'||h=='f'){
				b[k]='f';
				b[j]=' ';
			}
			else{
				b[k]='t';
				b[j]=' ';
			}
		}
	}
}
void cor(){
	for(long long i=0;i<len;i++){
		if(b[i]=='o'){
			b[i]=' ';
			char q,h;
			int j,k;
			for(j=i;;j++){
				if(b[j]=='f'||b[j]=='t'){
					h=b[j];
					break;
				}
			}
			for(k=i;;k--){
				if(b[k]=='f'||b[k]=='t'){
					q=b[k];
					break;
				}
			}
			if(q=='f'&&h=='f'){
				b[k]='f';
				b[j]=' ';
			}
			else{
				b[k]='t';
				b[j]=' ';
			}
		}
	}
}
int main(){
	cin.getline(a,9999999);
	len=strlen(a);
	if(a[0]=='a'||a[0]=='o'||a[len-1]=='a'||a[len-1]=='o'||a[len-1]=='n'){
		cout<<"error";
		return 0;
	}
	for(long long i=0,j=0;i<len;i++){
		if(!t){
			t=1;
			b[j++]=a[i];
		}
		if(a[i]==' ')t=0;
	}
	len=strlen(b);
	if(!error(b,len)){
		cout<<"error";
		return 0;
	}
	cnot();
	cand();
	cor();
	len=strlen(b);
    for(long long i=0;i<len;i++){
    	if(u==1&&(b[i]=='t'||b[i]=='f')){
			cout<<"error";
			return 0;
		}
    	if(b[i]=='t'&&u==0){
    		s=1;
    		u=1;
		}
		if(b[i]=='f'&&u==0){
    		s=0;
    		u=1;
		}
	}
	if(s==1)cout<<"true";
	else cout<<"false";
	return 0;
}
``
请大佬们指教!
2022/10/22 13:21
加载中...