Question

例题3-5 环状序列(CircularSequence,ACM/ICPC Seoul 2004,UVa1584)

  长度为n的环状串有n种表示方法,分别为从某个位置开始顺时针得到,在这些排列中字典顺序最小的称“最小表示”。 如CTCC的最小表示为CCCT,CGAGTCAGCT的最小表示为AGCTCGAGTC。 提示:对于两个字符串,从第一的字符开始比较,当某一个位置的字符不同时,该位置字符较小的串,字典序小,如果一个字符串没有更多的字符,但是另一个字符串还没结束,则较短的字符串的字典序较小。

Think

【概念】

  字典序:环状字典序/全排列字典序(含:环状字典序)

Code

/*
例题3-5 环状序列(CircularSequence,ACM/ICPC Seoul 2004,UVa1584)
*/
#include<iostream>
#include<string.h>
using namespace std; const int maxn = 105; //比较环状串s的两序列q与p的字典序大小,若q<p,返回值:1;反之:0
static int Less(char *s, int len, int q, int p){
int cmp;
for(int i=0;i<len;i++){
cmp = s[(q+i)%len] - s[(p+i)%len];
if(cmp > 0){ //q>p
return -1;
} else if(cmp < 0){ //q<p
return 1;
}
}
return 0;//q == p
} int main(){
int n;
int len,ans;//len:字符串长度; ans:偏移量
char str[maxn];
scanf("%d", &n);
while(n--){
scanf("%s", &str);
len = strlen(str);
for(int i=0;i<len;i++){
if(Less(str, len, i, ans) > 0) //如果i序列小,则换i
ans = i;
}
// cout<<"Hi"<<endl;//test
for(int i=0;i<len;i++){
//printf("%s", str[(ans+i)%len]);//为何此处会卡住?
putchar(str[(ans+i)%len]);
}
}
return 0;
}
/*
1
CCTC CCCT
*/

[C++]环状序列(CircularSequence,ACM/ICPC Seoul 2004,UVa1584)的更多相关文章

  1. 环状序列(Circular Sequence, ACM/ICPC Seoul 2004, UVa1584)

    长度为n的环状串有n种表示法,分别为从某 个位置开始顺时针得到.例如,图3-4的环状串 有10种表示: CGAGTCAGCT,GAGTCAGCTC,AGTCAGCTCG等. 在这些表示法中,字典序最小 ...

  2. 弱键(Weak Key, ACM/ICPC Seoul 2004, UVa1618)

    I think: 给出k(4≤k≤5000)个互不相同的整数组成的序列Ni,判断是否存在4个整数Np.Nq.Nr和Ns(1≤p<q<r<s≤k),使得Nq>Ns>Np&g ...

  3. [C++]最小生成元 (Digit Generator, ACM/ICPC Seoul 2005, UVa1583)

    Question 例题3-5 最小生成元 (Digit Generator, ACM/ICPC Seoul 2005, UVa1583) 如果x+x的各个数字之和得到y,就是说x是y的生成元.给出n( ...

  4. 分子量 (Molar Mass,ACM/ICPC Seoul 2005,UVa1586)

    习题 3-3 分子量 (Molar Mass,ACM/ICPC Seoul 2005,UVa1586) 给出一种物质的分子式(不带括号),求分子量.本题中的分子式只包含4种原子,分别为C,H,O,N, ...

  5. Ducci序列 (Ducci Sequence,ACM/ICPC Seoul 2009,UVa1594)

    题目描述: 题目思路: 直接模拟 #include<stdio.h> #include<string.h> #define maxn 105 int less(const ch ...

  6. DNA序列 (DNA Consensus String,ACM/ICPC Seoul 2006,UVa1368

    题目描述:算法竞赛入门经典习题3-7 题目思路:每列出现最多的距离即最短 #include <stdio.h> #include <string.h> int main(int ...

  7. Irrelevant Elements, ACM/ICPC NEERC 2004, UVa1635

    这种题目最重要的是思路了清晰 #include <cstdio> #include <cstring> ;//sqrt(n)+1 is enough ][]; ]; int a ...

  8. 分子量 (Molar Mass,ACM/ICPC Seoul 2007,UVa 1586)

    解题思路: 1.将分子量用double 数组记录下来 2.将字符串存储在字符数组中,从头向后扫描,一直记住“字母”,对下一个字符进行判断,是否是数字,如果是数字:用一个整数记录,本代码中用的sum,同 ...

  9. 得分(Score,ACM/ICPC Seoul 2005,UVa 1585)

    #include<stdio.h> int main(void) { char b; int t,cou,sum; scanf("%d",&t); getcha ...

随机推荐

  1. Cannot set property 'innerHTML' of null

    异常处理汇总-前端系列 http://www.cnblogs.com/dunitian/p/4523015.html 看如下错误代码: 知道是加载的问题就好解决了

  2. golang语言并发与并行——goroutine和channel的详细理解(一)

    如果不是我对真正并行的线程的追求,就不会认识到Go有多么的迷人. Go语言从语言层面上就支持了并发,这与其他语言大不一样,不像以前我们要用Thread库 来新建线程,还要用线程安全的队列库来共享数据. ...

  3. A1076. Forwards on Weibo

    Weibo is known as the Chinese version of Twitter. One user on Weibo may have many followers, and may ...

  4. JavaScript深入之从原型到原型链

    构造函数创建对象 我们先使用构造函数创建一个对象: function Person(){} var person = new Person(); person.name = 'Kevin'; cons ...

  5. mybatis的一些小知识

    <update id="setReaded"> update wa_ent_job_app set IS_READ= 1, READ_TIME=now() where ...

  6. 环境变量(1):PATH的修改

    1.查看当前PATH值:echo $PATH 2.只在当前会话生效操作 1)PATH=$PATH:/sbin 2)export PATH 3)echo $PATH  --再看此时的PATH值!不过这个 ...

  7. python自动化开发-[第十七天]-django的ORM与其他

    今日概要: 1.name别名 2.模版的深度查询 3.模版语言之filter 4.自定义过滤器,filter和simpletag的区别 5.orm进阶 扫盲:url的组成 URL:协议+域名+端口+路 ...

  8. go 方法

    go 方法 Golang中的任何自定义类型,都可以有方法,而不仅仅是struct. 定义:func (recevier type) methodName(参数列表)(返回值列表){} 方法的访问控制, ...

  9. Linux网卡调优篇-禁用ipv6与优化socket缓冲区大小

    Linux网卡调优篇-禁用ipv6与优化socket缓冲区大小 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   一般在内网环境中,我们几乎是用不到IPV6,因此我们没有必要把多不 ...

  10. Hadoop问题:java.net.SocketException: Network is unreachable

    问题描述:Failed on local exception: java.net.SocketException: Network is unreachable; Host Details : loc ...