题目概述:

长度为n的环状串有n种表示法, 字典序最小的称为最小表示。输入一个长度为n(n<100)的环状字符串的一种表示方法,输出最小表示 。
如:CTCC 为环状字符串的一种表示方法,它的所有表示方法分别为:CTCC、TCCC、CCCT、CCTC。其中最小表示为CCCT。

储备知识:
字典序:

字典序:按字典顺序从两个字符串的第一位开始比较,字典顺序靠前的串较小。若两串前n个字母都相同,但串A长于串B,则串B小。
如:ABCD小于BCDA

思路:

将序列放入无头指针循环链表(一定是无头指针的链表,否则判每次遍历都需跳过头指针,非常麻烦)。
利用循环链表的循环特性求出每种情况, 分别比较。 代码其实并不长,只是写链表占了很多行。

收获:

掌握了无头指针循环链表的定义方法,学到了字典序的概念。

代码:
#include <iostream>
#include <cstdio>
#include <list>
#include <cstdlib>
#include <cstring>using namespace std ;typedef struct LNode *lbook ;
struct LNode{char x ;struct LNode *list ;
}; //创建
lbook Creat(char a[] , int len1) {lbook P , P1 , P2 ;P = (lbook)malloc(sizeof(LNode)) ;      //无头指针 P->x = a[0] ;                          //无头指针的链表定义方式 P1 = P;int j = 1 ;while(j != len1) {char s = a[j++] ;lbook P3 ;P3 = (lbook)malloc(sizeof(LNode)) ;P3->x = s ;P3->list = P1->list ;P1->list = P3 ;P1 = P3 ;}P1->list = P ;                          //循环链表 return P ;
}//查找
lbook Find(lbook P , int len , int i) {          int k = 0 ; while(k++ != len) {if(k == i) return P ;P = P->list ;}
} int main()
{//悔棋很麻烦。 lbook L ;char a[105] ;cin >> a ;                //输入 int len = strlen(a) ; //输入字符串a的长度L = Creat(a , len) ;  if(len == 1) {          //特殊情况:长度为1则直接输出。 Show(L,len) ;return 0 ;}//每条链比较字典序,n条链需比较n-1次。int k = 0 ; int s = 2 ;char c[105] ;                //存放结果strcpy(c,a) ;                 //c先行存放a数组的值。 while(k++ != (len-1)) {lbook LL = Find(L, len, s) ;s++ ;//定义d数组,分别存放环状序列所有结果 char d[105] ; int r = 0 ;while(r != len) {d[r] = LL->x ;r++ ;LL = LL->list ;}//若c>d,则将d赋给c,重复操作。 if((strcmp(c,d)) == 1)  strcpy(c,d) ;} cout << c ; return 0 ;}

算法竞赛入门经典(第二版) | 程序3-10 生成元 (UVa1584,Circular Sequence)相关推荐

  1. 算法竞赛入门经典(第二版) | 程序3-6 WERTYU (UVa 10082)(常量数组)

    题目描述: 输入一个按键盘顺序,向后错一位后敲出的字符串,输出本来想打出的句子, 且输入中不会出现不合法的字符,例如A. Simple input: O S, GOME YPFSU/ Simple o ...

  2. 补学图论算法:算法竞赛入门经典(第二版)第十一章:

    补学图论算法:算法竞赛入门经典(第二版)第十一章: 倒排索引还没有实现! 下面是左神的图论算法,并查集笔记.和一个美团题目. ''' https://www.nowcoder.com/live/11? ...

  3. UVA-12171 雕塑 题解答案代码 算法竞赛入门经典第二版

    GitHub - jzplp/aoapc-UVA-Answer: 算法竞赛入门经典 例题和习题答案 刘汝佳 第二版 这道题目在<算法竞赛入门经典第二版>书中标注了星号,也是第一道出现星号的 ...

  4. 算法竞赛入门经典第二版课后习题答案第二章

    算法竞赛入门经典第二版课后习题答案 第二章 习题2-1水仙花数 输出100-999中的所有水仙花数.若三位数ABC满足ABC=A^3+B^3+C^3,则称其为水仙花数.例如153=1^3+5^3+3^ ...

  5. 算法竞赛入门经典(第二版)-刘汝佳-第六章 数据结构基础 习题(12/14)

    文章目录 说明 习题 习6-1 UVA 673 平衡的括号 习6-2 UVA 712 S - 树 习6-3 UVA 536 二叉树重建 习6-4 UVA 439 骑士的移动 习6-5 UVA 1600 ...

  6. UVA-814 邮件传输代理的交互 题解答案代码 算法竞赛入门经典第二版

    GitHub - jzplp/aoapc-UVA-Answer: 算法竞赛入门经典 例题和习题答案 刘汝佳 第二版 AC代码 #include<iostream> #include< ...

  7. UVA-1598 交易所 题解答案代码 算法竞赛入门经典第二版

    GitHub - jzplp/aoapc-UVA-Answer: 算法竞赛入门经典 例题和习题答案 刘汝佳 第二版 AC代码 有意思的一个题目.书上说这是一个不错的优先队列练习题,但实际上它其实是一个 ...

  8. 算法竞赛入门经典第二版:循环结构程序设计实例与习题

    实例: 1.阶乘之和 输入n,计算S= 1!+2!+3!+-+n!的末六位. 分析:两个循环,里面循环用于计算不同数的阶乘,外面一个循环用于将所有阶乘相加,核心算法 "for(int i=1 ...

  9. 算法竞赛入门经典(第二版) | 例题4-5 追踪电子表格中的单元格 (UVa512,Spreadsheet Tracking,World Finals)(解法二)

    本着清晰明了易懂可以水两篇 的理念,笔者将这道题分两次发布.这是第二种解法. 第一种解法传送门→解法一+提交网址 因为解法1中有详细关于题目和输入输出格式等的介绍,这里就不过多赘述了. 分析: 一些初 ...

最新文章

  1. 【Groovy】编译时元编程 ( 方法拦截时用到的 AST 语法树节点 MethodNode 节点 | MethodNode 节点分析 | MethodNode 节点中的BlockStatement)
  2. 波形捕捉:(2)创建捕捉设备对象
  3. git 初步使用01
  4. 【代码笔记】iOS-performSelectorOnMainThread
  5. 面向对象——类设计(一)
  6. jsf用于页面判断的标签_用于操作和导航的JSF命令组件标签
  7. native字体尺寸自适应 react_React Native之图片/宽高/字体平台适配
  8. bootstrap 页面垂直居中_bootstrap div垂直居中+水平居中保持响应式
  9. 颜色代码大全 - RGB颜色查询对照表
  10. VT-x is disabled in BIOS错误解决
  11. 5G专网大上行带宽技术设计与实现
  12. 哪一款信用卡累计兑换航空里程最划算?
  13. 改进YOLOv5系列:首发结合 RepLKNet 构建 最新 RepLKDeXt 结构|CVPR2022 超大卷积核, 越大越暴力,大到31x31, 涨点高效
  14. scratch成语接龙 电子学会图形化编程scratch等级考试四级真题和答案解析2021-9
  15. 安搭Share:熬夜,对于身体健康的损坏程度,不亚于过度劳累
  16. PB调用C#开发的控制台应用——实现WORD文档按页转存JPG图片
  17. 使用孪生网络和零样本学习进行文本分类
  18. mac 开启android 模拟器,Mac下安卓模拟器环境配置
  19. components vue 引用 assets图片
  20. kube-proxy模式之iptables

热门文章

  1. 深入理解RCU | RCU源码剖析
  2. GitHub:再见,master!
  3. 曹大带我学 Go(12)—— 面向火焰图编程
  4. Software Ate The World, Open Source Is Eating The Software World
  5. 3.注释(代码的整洁之道)
  6. 提速 30%!腾讯TQUIC 网络传输协议
  7. 认证鉴权与API权限控制在微服务架构中的设计与实现
  8. 时光机穿梭---撤销修改
  9. linux编译libevent
  10. windows平台桌面开发技术