IT民工
加油!

  POJ1509没什么区别,只是输入形式上有些许改变,而且这里要求输出的位置是字符串的

下标,而不用再加1

 

/*Accepted     1729     C++     10ms     276kb     Yu*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;

const int MAXN = 100100;
char s[MAXN];
int n, T;

int Minpre()
{
    int i = 0, j = 1, k = 0, x, y;
    while(i < n && j < n && k < n)
    {
        x = (i + k) % n;
        y = (j + k) % n;
        if(s[x] < s[y])
            j += k + 1, k = 0;
        else if(s[x] > s[y])
            i += k + 1, k = 0;
        else
            ++ k;
        if(i == j) j ++;
    }
    return min(i, j);
}

int main()
{
    scanf("%d", &T);
    while(T --)
    {
        scanf("%d%s", &n, s);
        printf("%d\n", Minpre());
    }
    return 0;
}

 

 

 

posted on 2012-08-03 10:05  找回失去的  阅读(162)  评论(0编辑  收藏  举报