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);
    }
}

 

posted @ 2015-08-12 15:05  sweat123  阅读(249)  评论(0编辑  收藏  举报