您的位置:首页 > 产品设计 > UI/UE

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

2017-02-14 10:30 295 查看
长度为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_NUM	250

int 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 ;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: