#3,5,8WA,#4TLE萌新求助!
查看原帖
#3,5,8WA,#4TLE萌新求助!
672632
Betty1236楼主2023/2/10 22:15
#include <iostream>
#include <algorithm>
using namespace std;
char x[1145];
int n;
int ans1=0;//往前的答案 
int ans2=0;//往后的答案 
int cnt=0;//计数器 
int ans=0;//答案 
char clr;//当前的色彩 
void searchfront(int i){//向前找 
	int k=i;
	while(x[k]=='w'){
		cnt++;
		k++;
		if(k>=n){
			k=0;
		}
	}
	clr=x[k];
	if(k<n&&k>=i){
		for(k;k<n;k++){
			if(clr==x[k]||x[k]=='w'){
				cnt++;
			}
			else{
				ans1=max(ans1,cnt);
				cnt=0;
				clr=x[k];
			}
		}
		k=0;
	}
	for(k;k<i;k++){
		if(clr==x[k]||x[k]=='w'){
			cnt++;
		}
		else{
			ans1=max(ans1,cnt);
			cnt=0;
		}
	}
	ans1=max(ans1,cnt);
	cnt=0;
}
void searchback(int i){//向后找 
	int k=i;
	while(x[k]=='w'){
		cnt++;
		k--;
		if(k<0){
			k=n-1;
		}
	}
	clr=x[k];
	if(k>=0&&k<=i){
		for(k;k>=0;k--){
			if(clr==x[k]||x[k]=='w'){
				cnt++;
			}
			else{
				ans2=max(ans2,cnt);
				cnt=0;
				clr=x[k];
			}
		}
		k=n-1;
	}
	for(k;k>i;k--){
		if(clr==x[k]||x[k]=='w'){
			cnt++;
		}
		else{
			ans2=max(ans2,cnt);
			cnt=0;
		}
	}
	ans2=max(ans2,cnt);
	cnt=0;
}
int main(){
	cin>>n;
	for(int q=0;q<n;q++){
		cin>>x[q];
	}
	for(int i=1;i<n;i++){
		ans1=0;
		ans2=0;
		searchfront(i);
		searchback(i-1); 
		ans=max(ans,ans1+ans2);
	}
	if(ans>n){
		ans=n;
	} 
	cout<<ans;
}
2023/2/10 22:15
加载中...