從1到n-1,在str[i]位置分開,分別向左計數a,向右計數b,求a+b。求的最大的a+b值。若是向左走到頭就循環到末尾,向右到頭就循環到開頭。最後若是max>n,則max=n。spa
/* ID:jzzlee1 PROG:beads LANG:C++ */ #include <fstream> #include <cstring> using namespace std; ifstream fin("beads.in"); ofstream fout("beads.out"); int main() { int n;char str[360]; fin>>n>>str; int i,j,k,a=0,b=0;int max=0;char ch; for(i=0;i<n-1;i++) { a=b=0;j=i;ch=str[j]; while ((ch==str[j] || str[j]=='w')&& a<n){ j--; a++; if (j<0) j=n-1; if (ch=='w') ch=str[j]; } j=i+1;ch=str[j]; while ((ch==str[j] || str[j] =='w') && b<n ){ j++; b++; if (j==n) j=0; if (ch=='w') ch=str[j]; } if(max<a+b) max=a+b; } fout<<(max>n?n:max)<<endl; return 0; }