• UVa1584


    //UVa1584 - Circular Sequence
    //题目:给你一个环状串,输出它以某一位置为起点时得到最小字典序的串。
    //分析:从初位置到末位置每次更新字典序较小的起始位置
    #include<stdio.h>
    #include<string.h>
    #define max 105
    //对于序列s,i是否比ans小
    int find(char* s, int x, int y){
    	int len = strlen(s);
    	//字典序比较:直接比较从第i个起的不相等的较小字符即为字符串较小字典序(//长度不等时较短的就较小)
    	for(int i = 0; i < len; i++){
    		if(s[(x+i)%len] != s[(y+i)%len])
    			return s[(x+i)%len] < s[(y+i)%len];
    	}
    	return 0;//相等
    }
    int main(){
    	int T;
    	char s[max];	
    	scanf("%d",&T);
    	while(T--){
    		scanf("%s",s);
    		int ans = 0;
    		int len = strlen(s);
    		for(int i = 1; i < len; i++){
    			if(find(s, i, ans)) ans = i;
    		}
    		//***输出,用取模的方法来实现,从尾到头相连接的环装输出
    		for(int i = 0; i < len; i++)
    			putchar(s[(i+ans)%len]);
    		putchar('
    ');
    	}
    	return 0;
    }
    /*
    *DATE IN:
    2
    CGAGTCAGCT
    CTCC
    
    *DATE OUT:
    AGCTCGAGTC
    CCCT
    */
    

  • 相关阅读:
    Elastic 技术栈之快速入门
    JDK8 指南(译)
    Intellij IDEA 使用小结
    面向对象1
    函数总结
    Python中i = i + 1与i + = 1的区别
    python中变量的交换
    python的数据类型的有序无序
    对列表里的字典按年龄从小到大排序
    centos7安装python3
  • 原文地址:https://www.cnblogs.com/gwj1314/p/9444934.html
Copyright © 2020-2023  润新知