the reason failure:1、首先给的样例必须得过,提交前都测一遍。
2、考虑各种情况,把所有可能存在的情况都分析.如这题给的字符串,如果字符串全部一样,或者只给一个,或者给很多.
3、初始化问题,再出出现.
thining:这题是项链题,要考虑到(项链头前面第一段可取+项链尾之前那一段(如果可取))+项链头第二段得相加是一种情况,
但项链尾之前第二段可取+(项链尾前第一段+项链头前第一段(如果可取)也得考虑,也就是项链的连接处是有2种情况..、
源代码:
/*
PROG: beads
LANG: C++
ID: I
*/
#include <bits/stdc++.h>
using namespace std;
int main(){
freopen("beads.in","r",stdin);
freopen("beads.out","w",stdout);
char l1[1200],l2[1200],l3[1200];
int n;
memset(l1,0,sizeof(l1));
memset(l2,0,sizeof(l2));
memset(l3,0,sizeof(l3));
int i,j,k;
cin >>n;
int n1=n;
cin >> l1;
char c=l1[0];
int a1=0,b1=0,sum=0;
for(i=0;i<n;i++){
if(l1[i]!='w'){
c=l1[i];
break;}
}
i=0;
while((l1[i]==c||l1[i]=='w')&&i<n){
l3[i]=l1[i];
i++;
}
int t=i;
//cout << l3 << endl;
//cout << c << endl;
i=0;
while((c==l1[n-1]||l1[n-1]=='w')&&n>=0){
n--;
l2[i++]=l1[n];
}
for(j=0;j<n1;j++)
l2[i+j]=l1[j];
//cout << l2 << endl;
strcat(l2,l3);
int w;
int c1=0;
//cout << l2 << endl;
for(i=0;i<n1+(n1-n)+t;i++){
if(l2[i]==c||l2[i]=='w'){
a1++;
//cout << a1 << "\t" << b1 << endl;
if(sum<a1+b1)
sum=a1+b1;
}else{
b1=a1+c1;
a1=1;
//cout << a1 << "\t" << b1 << endl;
if(sum<a1+b1)
sum=a1+b1;
int d=i;
c1=0;
while(l2[--d]=='w'){
c1++;
}
c=l2[i];
}
}
if(sum<=n1)
cout << sum << endl;
else
cout << n1 << endl;
return 0;
}