郑州网站设计专家,陕西省中小学教师培训网站,有没有免费看的视频,建网站域名注册题目 长度为n的环状串有n种表示方法#xff0c;分别为从某个位置开始顺时针得到#xff0c;在这些排列中字典顺序最小的称“最小表示”。 如CTCC的最小表示为CCCT#xff0c;CGAGTCAGCT的最小表示为AGCTCGAGTC。 提示#xff1a;对于两个字符串#xff0c;从第一个字符开始…题目 长度为n的环状串有n种表示方法分别为从某个位置开始顺时针得到在这些排列中字典顺序最小的称“最小表示”。 如CTCC的最小表示为CCCTCGAGTCAGCT的最小表示为AGCTCGAGTC。 提示对于两个字符串从第一个字符开始比较当某一个位置的字符不同时该位置字符较小的串字典序小如果一个字符串没有更多的字符但是另一个字符串还没结束则较短的字符串的字典序较小。
输入输出样例
输入
2
CTCC
CGAGTCAGCT
输出
CCCT
AGCTCGAGTC 代码
#includestdio.h
#includestring.h
#define maxn 105
int less(const char *s,int p,int q){//环串s的表示法p是否比表示法q的字典序小 int n strlen(s);int i;for(i0;in;i){if(s[(pi)%n]!s[(qi)%n]){//环状串的表示法 return s[(pi)%n]s[(qi)%n];}}return 0;//怎么排序都相等
}
int main(){int T;char s[maxn];scanf(%d,T);while(T--){scanf(%s,s);int ans0;int nstrlen(s);int i;for(i1;in;i){if(less(s,i,ans)){//如果表示法i的字典序比表示法ans的字典序小ans更新为i ansi;}}for(i0;in;i){putchar(s[(ians)%n]);//环状输出 }putchar(\n);}return 0;
} 掌握环状表示法