uva 1584
来源:互联网 发布:外交部流氓回答知乎 编辑:程序博客网 时间:2024/05/16 12:51
长度为n的环状串有n种表示法,分别为从某
个位置开始顺时针得到。例如,图3-4的环状串
有10种表示:
CGAGTCAGCT,GAGTCAGCTC,AGTCAGCTCG等。在这些表示法中,字典序最小的称
为”最小表示”。
输入一个长度为n(n≤100)的环状DNA串(只包含A、C、G、T这4种字符)的一种表
示法,你的任务是输出该环状串的最小表示。例如,CTCC的最小表示是
CCCT,CGAGTCAGCT的最小表示为AGCTCGAGTC。
Sample Input
2
CGAGTCAGCT
CTCC
Sample Output
AGCTCGAGTC
CCCT
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=829&page=show_problem&problem=4459
#include<iostream>#include<string>#include<cstdio>#include<string.h>using namespace std;int const N = 100;//比较从be1,和从be2开始的字串哪一个更小int com(char *s,int be1,int be2){ int sl=strlen(s); for(int i=0;i<sl;i++) { //cout<<endl<<(be1+i)%N<<endl; //cout<<s[(be1+i)%N]<<"_"<<s[(be2+i)%N]<<endl; if(s[(be1+i)%sl]>s[(be2+i)%sl]) return be2; if(s[(be1+i)%sl]<s[(be2+i)%sl]) return be1; } return be1;} char s[N+5];int main(){// char acgt[4]="ACGT"; int T=1; cin>>T; while(T--) { scanf("%s",s); int j=0; int be1=0,be2; for(int i=0;i<strlen(s);i++)//找最小的首字符给be1 { if(s[i]<s[be1]) { be1=i; } } //cout<<be1<<endl; for(int i=0;i<strlen(s);i++)//在最小的首字符中 找最小的字串 { if(s[i]==s[be1]) { if(com(s,be1,i)==i) be1=i; } } for(int i=0;i<strlen(s);i++) cout<<s[(be1+i)%strlen(s)]; cout<<endl; } return 0;}ACat2017/12/9
阅读全文
0 0
- UVA 1584
- UVa 1584
- UVA-1584
- UVa 1584
- UVA 1584
- UVA 1584
- UVa 1584
- uva 1584
- UVa 1584 Circular Sequence
- UVa 1584 - Circular Sequence
- UVA 1584 - Circular Sequence
- UVA - 1584 Circular Sequence
- UVa 1584 - Circular Sequence
- UVa-1584Circular Sequence
- 【Uva 1584】 Circular Sequence
- UVa 1584 - Circular Sequence
- UVA 1584 Circular Sequence
- Uva 1584 Circular Sequence
- 3456. Huge Numbers (Large) ECNU
- poj3481 Double Queue
- FlowLayoutDemo
- Spinner android:entries属性/ xml 中 @array 写法
- POJ 3984 迷宫问题(BFS+路径记录)
- uva 1584
- java(循环,分支)语句总结
- JavaEE之反射
- mysql 查看及修改表结构
- 在Windows平台上安装Node.js及NPM模块管理
- Markdown入门操作
- java--集合--Collection--Set
- 传统定时器技术入门-java 类Timer
- sklearn官网学习入门二