Circular Sequence

这一题就像求n个元素中的最小值一样,设定好字符的起始位置ans,和判断的起始位置i,两个序列不断比较,如果序列ans比i大,那么ans = i,直到比较结束,输出最后从ans开始的序列
字典序:字符串在字典中的顺序,当两个字符串比较,遇到第一个不相同的字符时,比较两个字符大小,字符大的字典序大,反之字典序小
代码如下:
#include<stdio.h> #include<string.h> //判断两个典序的大小 int judge(char ch[], int ans, int p) { int i; for (i = 0; i < strlen(ch); i++) //比较两个序列是可以让序列成环状循环,太牛逼了 { if (ch[(ans + i) % strlen(ch)] != ch[(p + i) % strlen(ch)]) return ch[(ans + i) % strlen(ch)] > ch[(p + i) % strlen(ch)]; } return 0; } int main(void) { int T; scanf("%d", &T); char ch[101]; while (T--) { scanf("%s", ch); int ans = 0; int i; for (i = 1; i < strlen(ch); i++) { if (judge(ch,ans,i)) ans = i;//如果从i开始的序列比从ans的序列小那么ans = i } for (i = 0; i < strlen(ch); i++) { putchar(ch[(ans + i) % strlen(ch)]); } putchar('\n'); } return 0; }
计算机小白记录学习过程,喜欢就点个推荐和关注吧O(∩_∩)O哈哈~

浙公网安备 33010602011771号