poj1509 最小表示法
#include<stdio.h> #include<string.h> #define maxn 10010 char s[maxn]; int getmin() { int i,j,k,len=strlen(s); i=0; j=1; k=0; while(i<len&&j<len&&k<len) { int t=s[(i+k)%len]-s[(j+k)%len]; if(!t) k++; else { if(t>0) i+=k+1; else j+=k+1; if(i==j) j++; k=0; } } return i<j?i:j; } int main() { int t,i; scanf("%d",&t); while(t--) { scanf("%s",s); printf("%d\n",getmin()+1); } }