Circular Sequence,ACM/ICPC Seoul 2004,UVa 1584

#include <stdio.h>
#include <string.h>
#define maxn 105 int lss(const char *s,int p,int q)
{
int i, stlen=strlen(s);
for(i=0; i<stlen; i++)
if(s[(p+i)%stlen] != s[(q+i)%stlen])
return s[(p+i)%stlen] < s[(q+i)%stlen];
return 0;
}
int main(void)
{
int n,ans,stlen,i;
char carr[maxn];
scanf("%d",&n);
while(n--)
{
ans=0;
scanf("%s",carr);
stlen=strlen(carr);
for(i=1; i<stlen; i++)
if(lss(carr,i,ans))ans=i;
for(i=0; i<stlen; i++)
putchar(carr[(i+ans)%stlen]);
putchar('\n');
}
return 0;
}
求字典序的“最小表示”。
ans表示最小下标,初始值为0,for循环,从1开始循环,依次比较前一个和后一个
第一次 ans=0.i=1,即比较从0开始的字符串与从1开始的字符串那个字典序小,
如果 lss(s,i,ans)则ans=i; //lss()函数返回是否后一个比前一个小,如果小,则将后一个坐标即i赋值给ans,使得ans 一直记录最小的字典序的开始下标。
思路:
找最小字典序,即从开始至最后依次比较,将其字串看成一个环,其下标%其字串长度即可进行循环
ACAB
ACAB 比较 CABA
0123 123[0(4%4)]
在主函数中循环,依次比较,利用自己写的函数(后一个小于前一个),则记录后一个下标。最后记录的是最小字典序的开始下标,然后输出即可
Circular Sequence,ACM/ICPC Seoul 2004,UVa 1584的更多相关文章
- 生成元(Digit Generator ,ACM/ICPC Seoul 2005 ,UVa 1583)
生成元:如果 x 加上 x 各个数字之和得到y,则说x是y的生成元. n(1<=n<=100000),求最小生成元,无解输出0. 例如:n=216 , 解是:198 198+1+9+8=2 ...
- [C++]环状序列(CircularSequence,ACM/ICPC Seoul 2004,UVa1584)
Question 例题3-5 环状序列(CircularSequence,ACM/ICPC Seoul 2004,UVa1584) 长度为n的环状串有n种表示方法,分别为从某个位置开始顺时针得到,在这 ...
- 分子量 (Molar Mass,ACM/ICPC Seoul 2005,UVa1586)
习题 3-3 分子量 (Molar Mass,ACM/ICPC Seoul 2005,UVa1586) 给出一种物质的分子式(不带括号),求分子量.本题中的分子式只包含4种原子,分别为C,H,O,N, ...
- 环状序列(Circular Sequence, ACM/ICPC Seoul 2004, UVa1584)
长度为n的环状串有n种表示法,分别为从某 个位置开始顺时针得到.例如,图3-4的环状串 有10种表示: CGAGTCAGCT,GAGTCAGCTC,AGTCAGCTCG等. 在这些表示法中,字典序最小 ...
- 分子量 (Molar Mass,ACM/ICPC Seoul 2007,UVa 1586)
解题思路: 1.将分子量用double 数组记录下来 2.将字符串存储在字符数组中,从头向后扫描,一直记住“字母”,对下一个字符进行判断,是否是数字,如果是数字:用一个整数记录,本代码中用的sum,同 ...
- 弱键(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 ...
- 生成元(Digit Generator,ACM/ICPC Seoul 2005,UVa 1583)
#include<cstdio>#include<cstdlib>#include<cstring>using namespace std;int t, n, a, ...
- 得分(Score,ACM/ICPC Seoul 2005,UVa 1585)
#include<stdio.h> int main(void) { char b; int t,cou,sum; scanf("%d",&t); getcha ...
- 得分(Score, ACM/ICPC Seoul 2005,UVa 1585)
#include<cstdio>#include<cstdlib>#include<cstring>int main(){ char s[80];//输入OOXXO ...
随机推荐
- Socket Programming in C#--Introduction
This is the second part of the previous article about the socket programming. In the earlier article ...
- wireshark添加ip.id字段
wireshark添加ip.id字段 为了在多个设备上追踪同一个数据包. 如果是同一个会话,则可以计算延迟, 如sta和应用服务器慢,这种问题,可以根据这个加上ip.id追踪数据到哪里慢了.
- 那些OVER的封装
什么over什么,如pppoe, ppp的封装都在over对象之后,入下图: PPPOE Ipsec
- dos常用命令
进入终端 首先具备一个控制台(命令行提示符窗口)用于输入dos命令: 打开一个控制台的方式: 方式一:开始-------> 所有程序--------->附件----------->命 ...
- [iOS翻译]Cocoa编码规范
简介: 本文整理自Apple文档<Coding Guidelines for Cocoa>.这份文档原意是给Cocoa框架.插件及公共API开发者提供一些编码指导,实质上相当于Ap ...
- Linux 下,mysql数据库报无法登陆错误:ERROR 1045 (28000): Access denied for use
今天在别人的服务器上登录mysql发现无法登陆(Mysql别人实现安装好的) 密码和用户名都是正确的,但登录后报如下错误: ERROR 1045 (28000): Access denied for ...
- [CareerCup] 10.1 Client-facing Service 面向客户服务器
10.1 Imagine you are building some sort of service that will be called by up to 1000 client applicat ...
- vim环境设置和自动对齐
只要在 /etc/vimrc中加上这两句就行了set autoindentset smartindent------------------------------------------------ ...
- Orchard使用Tags(标签)组织文本
本文链接:http://www.cnblogs.com/souther/p/4517476.html 主目录 原文链接:http://docs.orchardproject.net/Documenta ...
- css兼容性的问题
https://www.douban.com/note/314793848/ 随意的一个博客ie6的兼容 这个博客比较好 http://blog.csdn.net/chuyuqing/article/ ...