UVA 1584 Circular Sequence
2015-08-24 14:52
656 查看
Circular Sequence
Submit Status
Description
Some DNA sequences exist in circular forms as in the following figure, which shows a circular sequence ``CGAGTCAGCT", that is, the last symbol ``T" in ``CGAGTCAGCT" is connected to the first symbol ``C". We always read a circular
sequence in the clockwise direction.
Since it is not easy to store a circular sequence in a computer as it is, we decided to store it as a linear sequence. However, there can be many linear sequences that are obtained from a circular sequence by cutting any place
of the circular sequence. Hence, we also decided to store the linear sequence that is lexicographically smallest among all linear sequences that can be obtained from a circular sequence.
Your task is to find the lexicographically smallest sequence from a given circular sequence. For the example in the figure, the lexicographically smallest sequence is ``AGCTCGAGTC". If there are two or more linear sequences that
are lexicographically smallest, you are to find any one of them (in fact, they are the same).
Each test case takes one line containing a circular sequence that is written as an arbitrary linear sequence. Since the circular sequences are DNA sequences, only four symbols, A, C, G and T,
are allowed. Each sequence has length at least 2 and at most 100.
The following shows sample input and output for two test cases.
Sample
Sample
注意:
1:尽量用define 定义
2:表示方法相同
int less(char *s,int a,int b)
int less(char s[],int a,int b)
3:环状数组如33行表示
Time Limit: 3000MS | Memory Limit: Unknown | 64bit IO Format: %lld & %llu |
Description
Some DNA sequences exist in circular forms as in the following figure, which shows a circular sequence ``CGAGTCAGCT", that is, the last symbol ``T" in ``CGAGTCAGCT" is connected to the first symbol ``C". We always read a circular
sequence in the clockwise direction.
Since it is not easy to store a circular sequence in a computer as it is, we decided to store it as a linear sequence. However, there can be many linear sequences that are obtained from a circular sequence by cutting any place
of the circular sequence. Hence, we also decided to store the linear sequence that is lexicographically smallest among all linear sequences that can be obtained from a circular sequence.
Your task is to find the lexicographically smallest sequence from a given circular sequence. For the example in the figure, the lexicographically smallest sequence is ``AGCTCGAGTC". If there are two or more linear sequences that
are lexicographically smallest, you are to find any one of them (in fact, they are the same).
Input
The input consists of T test cases. The number of test cases T is given on the first line of the input file.Each test case takes one line containing a circular sequence that is written as an arbitrary linear sequence. Since the circular sequences are DNA sequences, only four symbols, A, C, G and T,
are allowed. Each sequence has length at least 2 and at most 100.
Output
Print exactly one line for each test case. The line is to contain the lexicographically smallest sequence for the test case.The following shows sample input and output for two test cases.
Sample
Input
2 CGAGTCAGCT CTCC
Sample
Output
AGCTCGAGTC CCCT
注意:
1:尽量用define 定义
2:表示方法相同
int less(char *s,int a,int b)
int less(char s[],int a,int b)
3:环状数组如33行表示
#include<stdio.h> #include<string.h> #define maxn 105 //环状S的表示法a是否比表示法b字典序小 //int less(char *s,int a,int b) //表示方法相同 int less(char s[],int a,int b) { int n=strlen(s); for(int i=0;i<n;i++) { if(s[(i+a)%n]!=s[(i+b)%n]) { return s[(i+a)%n]<s[(i+b)%n]; } } return 0;//相等 } int main (void) { int T; char s[maxn]; scanf("%d",&T); while(T--&&scanf("%s",s)) { int n=strlen(s); int sec=0; for(int i=1;i<n;i++) { if(less(s,i,sec)) sec=i; } for(int i=0;i<n;i++) { putchar(s[(i+sec)%n]);//%n长度 变成环状 } printf("\n"); } return 0; }
相关文章推荐
- 为了UI,为了梦
- 如何发现交互设计中的思维盲区
- PAT 1062. Talent and Virtue (25)
- iOS 关于状态栏UIStatusBar的相关设置
- All of these replica devices about Diesel-engined include varied fashions right from antique
- 『MySQL』索引类型 normal, unique, full text
- DuiLib窗口增加阴影效果
- iOS基础-高级视图-UITableView--实例:QQ聊天
- UI, 基础控件,ToolBar,...
- hdu 1005 Number Sequence
- UIImageView设定圆角
- 【安卓学习问题日志】The project was not built due to "A resource exists with a different case
- ios实战开发之UIScrollView图片浏览器
- 很好的UI动效设计参考
- UITextField的键盘种类、用法总结
- UESTC cdoj 619 吴神,人类的希望 (组合数学)
- iOS开发-UIScrollView图片无限循环
- PL/SQL 报错:A query with LOB's requires OCI8 mode, but OCI7 mode is used
- [LeedCode OJ]#63 Unique Paths II
- UESTC-594 我要长高(动态规划+单调队列优化)