详解-例题3-6 环状序列(Circular Sequence, ACM/ICPC Seoul 2004, UVa1584)

本文详细探讨了如何找到环状DNA串的最小表示法,通过扫描字符数组并比较来确定最小序列的起始位置。以实例CGAGTCAGCT为例,解释了如何在不同表示中找到字典序最小的序列AGCTCGAGTC。
摘要由CSDN通过智能技术生成

紫书-例题3-6 环状序列(Circular Sequence, ACM/ICPC Seoul 2004, UVa1584)
长度为n的环状串有n种表示法,分别为从某 个位置开始顺时针得到。例如,图3-4的环状串有 10种表示:CGAGTCAGCT,GAGTCAGCTC,AGTCAGCTCG等。在这些表示法中,字典序最 小的称"最小表示"。 输入一个长度为n(n≤100)的环状DNA串 (只包含A、C、G、T这4种字符)的一种表示 法,你的任务是输出该环状串的最小表示。例 如,CTCC的最小表示是CCCT,CGAGTCAGCT 的最小表示为AGCTCGAGTC。
思路
这个题目的基本思路就是扫描一遍字符数组,先默认最小的序列的头元素的所在位置为0,然后扫描,进行比较,如果比当前的最小序列还要小,则更新最小的序列的头元素所在位置。
所以对于
0 1 2 3 4 5 6 7 8 9
CGA G TC A GCT
GAG T CA G CTC (i=1,minn=0)
AGT C AG C TCG (i=2,minn=0) -->return=1–>minn=i=2
GTC A GC T CGA (i=3,minn=2)
TC A G CT C GAG(i=4,minn=2)
CA G C TC G AGT(i=5,minn=2)
AG C TC G A GTC(i=6,minn=2) -->在lesss函数的for循环的i从0开始变化,直到找到与minn不同的位置,未找到则跳出for,返回0;找到则return=1–>minn=i=6
GCTC G AG TC A (i=7,minn=6)
CT CG A GT CAG (i=8,minn=6)
TC GA G TC AGC (i=9,minn=6) 至此遍历完毕得到最优minn=6,再for循环输出结果AGCTCGAGTC

#i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值