例题 3-6 环状序列

#include <stdio.h>
#include <string.h>

#define maxn 105
char s[maxn];

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(){
	int T;
	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; 
}

猜你喜欢

转载自blog.csdn.net/qq_41138935/article/details/81077851
3-6