环状序列,ACM/ICPC,UVa1584
2015-03-17 00:49
323 查看
环状序列
长度为n的环状串有n种表示方法,分别为从某个位置开始顺时针得到,在这些排列中字典顺序最小的称“最小表示”。如CTCC的最小表示为CCCT,CGAGTCAGCT的最小表示为AGCTCGAGTC。
提示:对于两个字符串,从第一的字符开始比较,当某一个位置的字符不同时,该位置字符较小的串,字典序小,如果一个字符串没有更多的字符,但是另一个字符串还没结束,则较短的字符串的字典序较小。
思路,其实就是定义两个int变量分别记录数组的下坐标,一个用于循环,一个用于记录当前开始最小的字符串的首下坐标,代码如下:
#include <iostream> #include <cstring> #define maxn 105 using namespace std; int less(char *s,int i,int ans); int main() { int i,ans; char s[maxn]; cin>>s; int length=strlen(s); ans=0; for(i=1;i<length;i++) if(less(s,i,ans)) ans=i; for(i=0;i<length;i++) cout<<s[(ans+i)%length]; return 0; } int less(char *s,int i,int ans) { int length=strlen(s); int j; for(j=0;j<length;j++) if(s[(ans+j)%length]!=s[(i+j)%length]) return s[(ans+j)%length]>s[(i+j)%length]; return 0; }
相关文章推荐
- 环状序列(Circular Sequence, ACM/ICPC Seoul 2004, UVa1584)
- 环状序列(Circular Sequence, ACM/ICPC Seoul 2004, UVa1584)
- 【紫书】例题3-6 环状序列(Circular Sequence, ACM/ICPC Seoul 2004, UVa1584)
- 例题3-6 环状序列(CircularSequence, ACM/ICPC Seoul 2004, UVa1584)
- 环装序列 (Circular Sequence, ACM/ICPC Seoul 2004, UVa1584)
- uva 1584 - Circular Sequence(环状序列)
- Circular Sequence,ACM/ICPC Seoul 2004,UVa 1584
- 2018.2.21【 UVa - 1584 】解题报告(紫书例题,环状序列,字典序)
- UVa 1584 Circular Sequence(环状序列)
- 环状序列(UVa1584)
- 3_6 环状序列(UVa1584)
- UVa1584 Circular Sequence(环状序列) (java版本)
- 例题3-6 环状序列 UVa1584
- DNA序列(DNA Consensus String, ACM/ICPC seoul 2006, UVa 1368)
- DNA序列 (DNA Consensus String, ACM/ICPC Seoul 2006 UVa1368)
- UVa1584 环状序列 (Circular Sequence)
- UVA.1584 环状序列
- UVA 1584 - Circular Sequence(环状序列)(字典序)
- 紫书第三章 UVa 1584[环状序列]
- 习题5-2 Ducci序列(Ducci Sequence, ACM/ICPC Seoul 2009, UVa1594)