环状序列(Circular Sequence, ACM/ICPC Seoul 2004, UVa1584)

来源:互联网 发布:数据分析流程图 编辑:程序博客网 时间:2024/04/25 11:54
    长度为n的环状串有n种表示法,分别为从某个位置开始顺时针得到。 例如,图3-4的环状串有10种表示:
    CGAGTCAGCT,GAGTCAGCTC,AGTCAGCTCG等。 在这些表示法中,字典序最小的称为"最小表示"。

    输入一个长度为n(n≤100)的环状DNA串(只包含A、 C、 G、 T这4种字符)的一种表示法,你的任务是输出该环状串的最小表示。 例如,CTCC的最小表示是CCCT,CGAGTCAGCT的最小表示为AGCTCGAGTC。

    

#include <stdio.h>#include <string.h>#define MAX_NUM250int main(void){char data[MAX_NUM];char buff[MAX_NUM];int len = 0 , i ;freopen("input.txt" , "r" , stdin);freopen("output.txt" , "w" , stdout);memset(data ,  0 , sizeof(data));memset( buff , 0 , sizeof(buff));scanf("%s" , data);strcpy( buff , data);len = strlen(data);for( i = 0 ; i < len ; i++){data[len+i] = data[i];if( strcmp( data+i , buff) < 0 ){strcpy(buff , data+i);buff[len] = '\0';}}printf("%s\n" , buff);return 0 ;} 


0 0