您的位置:首页 > 其它

UVa 1584 求余实现环状串

2017-07-07 23:49 351 查看
#include<stdio.h>
#include<string.h>
char s[100];
int Less(int a,int b)
{
int len=strlen(s);
for(int i=0;i<len;i++)
{
if(s[(a+i)%len]!=s[(b+i)%len])
return s[(a+i)%len]<s[(b+i)%len]?a:b;
}
return 0;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int i,ans=0;
scanf("%s",s);
int len=strlen(s);
for(i=0;i<len;i++)
ans=Less(i,ans);
for(i=0;i<len;i++)
putchar(s[(ans+i)%len]);
putchar('\n');
}
return 0;
}
/*
定义一个ans从环状串的下标0开始
从环状串的下标i=0开始遍历,每次i++
判断从i开始的字符串和从ans的下标开始得到的字符串谁更小
判断细节不再描述,注意下s[(a+i)%len]*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: