/* ID: haolink1 PROG: beads LANG: C++ */ //#include <iostream> #include <fstream> #include <string> using namespace std; int main(){ ifstream fin ("beads.in"); unsigned int num; fin >> num; string beads; fin >> beads; if(beads.length() != num){ cout<<"error"<<endl; return 0; } int max_num = 0; //Brute force ! for(unsigned int i = 0;i < num;i++){ int cur_num = 0; int diff = 0; //just choose a arbitrary char different from ‘w‘ ‘b‘ and ‘r‘; char sample = ‘n‘; //we transform the bidirectional collection in to unidirectional, //and when the beads‘color difference occur twice, the collection stop; for(unsigned int j = 0;j < num;j++){ if(beads[(i+j)%num]!=‘w‘ && beads[(i+j)%num]!=sample){ sample = beads[(i+j)%num]; diff++; if(diff<=2) cur_num++; else break; }else cur_num++; } max_num=(cur_num>max_num)?cur_num:max_num; } ofstream fout ("beads.out"); fout<<max_num<<endl; return 0; }
USACO 1.1 Broken Necklace (beads)
原文:http://blog.csdn.net/damonhao/article/details/19362697