P52 环状序列

#include<bits/stdc++.h>
using namespace std;
//p表示的序列是否比q表示的序列字典序小
int less(const char* s,int p,int q)
{
    int n=strlen(s);
    for(int i=0; i<n; i++)
    {
        if(s[(p+i)%n]!=s[(q+i)%n])
            return s[(p+i)%n]<s[(q+i)%n];
    }
    return 0;
}
int main()
{
    char s[100];
    scanf("%s",s);
    int l=strlen(s);
    int ans=0;//有ans记录字典序最小的位置
    for(int i=1; i<l; i++)
    {
        if(less(s,i,ans)) ans=i;
    }
    for(int i=0; i<l; i++)
    {
        printf("%c",s[(ans+i)%l]);
    }
    printf("
");
    return 0;
}
//在字符串中实现循环用 % 。
原文地址:https://www.cnblogs.com/laoyangtou/p/8855131.html