例题3-9环状序列
来源:互联网 发布:java 反射 实例化单例 编辑:程序博客网 时间:2024/05/17 04:38
长度为n的换证串有n种表示法,分别为从某个位置开始顺时针得到。例如图:
有10种表示:CGAGTCAGCT,GAGTCAGCTC,AGTCAGCTCG等。在这些表示法中,字典序最小的成为“最小表示”。
输入一个长度为n(n<=100)的环状DNA串(只包含A,C,G,T)的一种表示法你的任务是输出该环状串的最小表示。例如,CTCC的最小表示是CCCT。CGAGTCAGCT的最小表示为AGCTCAGTC。
书上的代码
#include <stdio.h>#include <string.h>const int maxn = 105;int less(const char* s,int i, int ans){int len = strlen(s);for(int j = 0;j < len;j ++){if(s[(i+j)%len] != s[(ans+j)%len])return s[(i + j)%len] < s[(ans + j)% len];}return 0;}int main(){int T;char s[maxn];scanf("%d",&T);while(T--){scanf("%s",s);int ans = 0;int len = strlen(s);for(int i = 1; i < len; i ++){if(less(s,i,ans)) ans = i;}for(int i = 0; i < len; i++){putchar(s[(i + ans)%len]);}putchar('\n');}return 0;}
自己手动模拟的代码 不简练但是好理解
#include<stdio.h>
#include<string.h>
int main()
{
int t ,i ,len,ii ;
char s[110] , c;
scanf("%d",&t);
while(t--)
{
scanf("%s",s);
len = strlen(s);
c = s[0];
for(i = 1;i<len;i++)
{
if(c>s[i])
{
c = s[i];
ii = i;
}
}
for(i = 0;i<len;i++)
{
putchar(s[(i+ii)%len]);
}
printf("\n");
}
return 0;
}
#include<string.h>
int main()
{
int t ,i ,len,ii ;
char s[110] , c;
scanf("%d",&t);
while(t--)
{
scanf("%s",s);
len = strlen(s);
c = s[0];
for(i = 1;i<len;i++)
{
if(c>s[i])
{
c = s[i];
ii = i;
}
}
for(i = 0;i<len;i++)
{
putchar(s[(i+ii)%len]);
}
printf("\n");
}
return 0;
}
所以说还是自己想比较好 别人的代码理解还是费劲
0 0
- 例题3-9环状序列
- 例题3-6 环状序列 UVa1584
- 《算法竞赛入门经典2ndEdition 》例题3-6 环状序列(Circular Sequence, Uva1584)
- 算法竞赛入门经典(第二版)-刘汝佳-第三章-例题3-5 环状序列
- 环状序列
- 环状序列
- 环状序列
- 环状序列
- 环状序列
- 环状序列
- 环状序列
- 环状序列(UVa1584)
- 3-6 环状序列(如何实现环状字符串的比较)
- 环状序列,ACM/ICPC,UVa1584
- Uva1508 Circular Sequence 环状序列
- uva10570 外星人聚会 环状序列
- UVa1584 环状序列 (Circular Sequence)
- 环状序列UVa1584紫苏第三章
- 170502 汇编-CMOS和BCD码;pyqt-comboBox的多级联动
- windows pygraphviz安装
- 深度学习防止过拟合的方法
- 图片的二次采样
- 设计模式--装饰者模式
- 例题3-9环状序列
- MySQL可视化工具使用
- 蓝桥杯 出栈顺序 DP
- 关于数据库连接
- Codeforces 746E Numbers Exchange 模拟
- CSS常用布局之——等分等高解决方案
- 设计模式之建造者模式
- 选择排序
- 函数的调用(求实参值的左右顺序)