环状序列排序

来自算法竞赛 入门经典

在这里插入代码片
#include<stdio.h>
#include<string.h>
#define maxn 105
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(void)
{
 int T;
 char s[maxn];
 scanf("%d",&T);
 while(T--)
 {
  scanf("%s",s);
  int ans = 0;
  int n = strlen(s);
  for(int i = 1;i < n;i++)
  {
   if(less(s,i,ans))
   {
    ans = i;
   }
  }
  for(int i = 0;i < n;i++)
  {
   putchar(s[(i + ans) % n]);
  }
  putchar('\n');
 }
 return 0;
}
发布了148 篇原创文章 · 获赞 44 · 访问量 4151

猜你喜欢

转载自blog.csdn.net/weixin_45949073/article/details/103926956