您的位置:首页 > 其它

【Broken Necklace】USACO第一次AC

2017-01-24 18:25 302 查看
题目很简单,代码也挺丑的,为了偷懒没有把两个循环写在一起。

过两天优化一下。

不过还是很开心。



/*
ID:twoutop1
LANG: C++
TASK: beads
*/
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
using namespace std;
string b;

int sum1[1000],sum2[1000],m,sums,maxn=-1000000,N;
char t;
int main(){
cin>>N>>b;
const int len=b.length();
//cout<<len<<endl;
b=b+b;
for(int i=0;i<len;i++){
for(int j=i;j<i+len;j++){
if(b[i]!='w'){
if(b[j]==b[i]) sum1[i]++;
if(b[j]=='w') sum1[i]++;
if(b[j]!=b[i]&&b[j]!='w') break;
}
else {
if(b[j]=='w') sum1[i]++;
else{
if(m!=1){
if(b[j]=='r') t='r';
else t='b';
m=1;
}}
if(b[j]==t) sum1[i]++;
if(b[j]!=t&&b[j]!='w') break;
}
}
m=0;
//cout<<sum1[i]<<" ";
}
//cout<<endl;
for(int i=len-1;i<2*len-1;i++){
for(int j=i;j>0;j--){
if(b[i]!='w'){
if(b[j]==b[i]) sum2[i]++;
if(b[j]=='w') sum2[i]++;
if(b[j]!=b[i]&&b[j]!='w') break;
}
else {
if(b[j]=='w') sum2[i]++;
else{
if(m!=1){
if(b[j]=='r') t='r';
else t='b';
m=1;
}}
if(b[j]==t) sum2[i]++;
if(b[j]!=t&&b[j]!='w') break;
}
}
m=0;
//cout<<sum2[i]<<" ";

}
//cout<<endl;
//cout<<len<<endl;
for(int s=0;s<len;s++){
sums=sum1[s]+sum2[len-1+s];
maxn=sums>maxn?sums:maxn;
//cout<<maxn<<" ";
}
if(maxn>len) maxn=len;
//cout<<len<<endl;
cout<<maxn<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: