题目:http://hustoj.sinaapp.com/problem.php?id=1819
从一串项链某一点向左右分别取珠子,直至颜色不同。
思路:珠子的个数最大350,用枚举法;对项链处理可将项链复制后头尾相连存入数组;最后如果统计出的个数超过n,则输出n;
#include <stdio.h> char beads[360]; int main() { int n; int ans=0; scanf("%d",&n); scanf("%s",beads); for (int i=0;i<n;i++) { beads[i+n]=beads[i]; beads[i+2*n]=beads[i]; } for(int i=0;i<3*n;i++) { int left=0,right=0; char bead1,bead2; bead1=beads[i]; bead2=beads[i+1]; for(int j=i;j>=0;j--) { if(beads[j]==bead1||beads[j]=='w') left++; else { if(bead1=='w') {bead1=beads[j];left++;} else break; } } for(int j=i+1;j<3*n;j++) { if(beads[j]==bead2||beads[j]=='w') right++; else { if(bead2=='w') {bead2=beads[j];right++;} else break; } } if(ans<right+left) ans=right+left; } if(ans>n) ans=n; printf("%d\n",ans); }