洛谷P1203坏掉的项链

关于环的处理

前后接一段同样的串免于在环中转圈

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,t1,t2,len1,len2,max_len;
bool f1,f2;
char a[1200],s1,s2;
int main()
{
	scanf("%d",&n);getchar();
    scanf("%s",a+1);
    for(int i=n+1;i<=2*n;i++)
      a[i]=a[i-n];
    for(int i=2*n+1;i<=3*n;i++)
      a[i]=a[i-2*n];
    for(int i=n+1;i<=2*n;i++)
    {
    	t1=i;t2=i-1;
    	s1=a[t1];s2=a[t2];
    	f1=true;f2=true;
    	len1=1;len2=1;
    	while(f1)
    	{
    	  t1++;
    	  if(t1==3*n) break;
    	  if(s1=='w')
    	  {
    	  	s1=a[t1];len1++;
    	  }
    	  else
    	  {
    	  	if(s1==a[t1]) len1++;
    	  	 else if(a[t1]=='w') len1++;
    	  	  else f1=false;
    	  }
    	}
    	while(f2)
    	{
    	  t2--;
    	  if(t2==0) break;
    	  if(s2=='w')
    	  {
    	  	s2=a[t2];len2++;
    	  }
    	  else
    	  {
    	  	if(s2==a[t2]) len2++;
    	  	 else if(a[t2]=='w') len2++;
    	  	  else f2=false;
    	  }
    	}
    	max_len=max(max_len,len1+len2);
    }
    if(max_len>n) max_len=n;
    printf("%d\n",max_len);
	return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值