
紫书
紫书
Alba_126
记录,分享
展开
-
算法竞赛入门经典(紫书)第四章——Message Decoding UVA-213
题意: 题目要求对给定的编码进行解密。 编码的规则是利用下面所示的 01 串 与给定的字符串相对应起来,如 AB#TANCnrtXc ,则能得到下面的信息: 0 - A 00 - B 01 - # 10 - T 000 - A 001 - N 010 - C 011 - n 100 - r 101 - t 110 - X 0000 - c 我们能够看到 01 ...原创 2018-02-26 15:52:18 · 302 阅读 · 1 评论 -
算法竞赛入门经典(紫书)第四章——A Typical Homework UVA-12412
题意: 这道题目很像上课布置的大作业,但是放到这里就需要我们去纠结格式之类的细节问题了。 题目中总共有 5 个操作:Add,Remove,Query,Show ranking,Show Statistics,看过一遍题目后就会发现 Show ranking 不需要怎么考虑,所以我们要操心的就是剩下四种操作。主菜单是下面代码运行的结果(为了消除大家对换行等格式问题的疑虑,就用代码来表示了,...原创 2018-02-28 16:04:02 · 315 阅读 · 0 评论 -
算法竞赛入门经典(紫书)第三章——Crossword Answers UVA-232
题意: 给一个 r 行 l 列的棋盘,每个格子中有字母或 ‘*’。 并告知存在特殊的格子,即最左边一列的字母格子、最上边一列的字母格子、左边或上边有 ‘*’ 格子的字母格子。 按照从左往右,从上往下的顺序对这些特殊格子进行编号就得到了题目给的图中的编号,即下图: 题目要求打印两组数据,一组是 Across,一组是 Down。 对于 Across 组,就是按照编号的顺序一行一行地找字...原创 2018-02-09 21:44:59 · 383 阅读 · 0 评论 -
算法竞赛入门经典(紫书)第三章——DNA Consensus String UVA-1368
题意: 题目要求给出一组长度为 n 的字符串,计算得出一个新的字符串,使得这个新的字符串和这一组字符串的汉明距离之和最小。思路: 依据题意,汉明距离指的就是两个字符串中对应位置字符不同的个数。 现在要使一个字符串和一组字符串的汉明距离最小,即使这个字符串和这一组字符串对应位置字符不同的情况最少化。容易想到,新字符串的每个位置上只要取的是一组字符串的该位置上出现的最多的那个字母即可。...原创 2018-02-09 22:31:08 · 234 阅读 · 0 评论 -
算法竞赛入门经典(紫书)第三章——Repeating Decimals UVA-202
题意: 给出一个分数,求它的循环节。思路: 假设 a / b = c ……d,其中 c 是商,d 是余数。 循环节的出现是由于该位除以除数后的余数与前面的某一位计算后的余数相同。 那题目中的几个数据举例子如下: 1/6=0……1 10/6=1……4 40/6=6……4 百分位的余数和十分位的余数相同,所以百分位是循环节。5/7=0……5 50/7=7……1 10...原创 2018-02-10 19:12:49 · 400 阅读 · 0 评论 -
算法竞赛入门经典(紫书)第三章——All in All UVA-10340
题意: 给两个字符串,判断是否能够在第二个字符串中删除 0 个或多个字符得到第一个字符串。思路: 判断第一个字符串从左往右的字母是否也在第二个字符串中从左往右出现。 实现起来的话就是用一个指针指向第一个字符串的第一个位置,遍历第二个字符串,对第二个字符串的每个字母进行判断是否和当前指针指向的第一个字符串的字母相同,相同的话指针就后移一位。 拿题目的样例进行讲解如下: 样例一能...原创 2018-02-10 21:19:35 · 197 阅读 · 0 评论 -
算法竞赛入门经典(紫书)第三章——Box UVA-1587
题意: 给出 6 组宽高,判断这六组宽高的长方形能否拼成一个长方体。思路: 6 个矩形能够拼成一个长方体,则它的边的长度可能有三种: 有 3 种边长:一般的长方体 有 2 种边长:底面为正方形的长方体 有 1 种边长:正方体有 3 种边长时,假设这 3 种边长分别为 a,b,c,则长方体 6 个侧面的宽高是 2 个 (a,b),2 个 (a,c),2 个 (b,c)(宽高的左...原创 2018-02-11 16:01:16 · 813 阅读 · 0 评论 -
算法竞赛入门经典(紫书)第三章——Kickdown UVA-1588
题意: 每组数据是两个由 1 和 2 组成的字符串,将这两个字符串合并在一起,每位上不能超过 3 ,求合并后的最短长度。思路: 采用移动字符串的方法来解决这道题目,可以分为三个阶段。 假设短的字符串在上面,长的字符串在下面。 第一阶段短字符串在长字符串前面; 第二阶段短字符串在长字符串上面; 第三阶段短字符串在长字符串后面。 下面通过解析样例来说明: 样例一: 初始状态 ...原创 2018-02-11 19:11:53 · 643 阅读 · 0 评论 -
算法竞赛入门经典(紫书)第四章——Ancient Cipher UVA-1339
题意: 题目讲了两种加密方法,一种是替代加密,指定字母之间的一一映射(不一定是对应后一个字母,也可能是其他映射),另一种是排列加密,给定一个排列,对原串重新排列。 现在题目给出加密后的串和处理出的原串,让我们判断处理的是否正确。思路: 这边要注意的是替代加密不一定就是每个字母对应后一个字母,也可能是其他的对应,比如把 ‘A’ 换成 ‘C’,’B’ 换成 ‘D’,则 AABB 的密文就...原创 2018-02-12 17:07:05 · 265 阅读 · 0 评论 -
算法竞赛入门经典(紫书)第三章——Puzzle UVA-227
题意: 可以理解为有一个 5×55×55\times 5 的拼图,里面有 24 个字母和一个空格。 假定 ‘A’ 代表着空格上移,’B’ 代表着空格下移,’R’ 代表着空格右移,’L’ 代表着空格左移。 要求针对给出的移动操作输出移动后的图或判断移动是否合法。Input: 1. 前五行是拼图,接下来是移动操作,直到以 0 结尾才结束。 2. 会有多个连续数据,以单个 Z 字母结束输...原创 2018-02-03 17:36:33 · 480 阅读 · 0 评论 -
算法竞赛入门经典(紫书)第四章——Hangman Judge UVA-489
题意: 介绍了一种游戏,给出一个字符串,然后让玩家去猜这个字符串中出现了哪些字母。如果猜错 7 次就 lose(猜对过的字母再猜也算错,比如原串是 cheese,第一次猜 e,对;第二次再猜 e,错)。如果字符串中出现的字母都被猜了一遍,那么就 win 了。如果猜完了也没 win 也没 lose,就是 chickened out。现在给两个字符串,第一个字符串可以看作是原串,第...原创 2018-02-18 19:43:39 · 431 阅读 · 0 评论 -
算法竞赛入门经典(紫书)第三章——Floating-Point Numbers UVA-11809
题意: 题目介绍了浮点数存储的方法,尾数有 M 位,阶码有 E 位,还有两位符号位分别表示尾数的符号和阶码的符号。现在给出对应一种 M 和 E 的能够表示的最大数,要求判断出 M 和 E 的值,其中 M 属于 (0, 9),E 属于 (1, 30)。思路: 题目的 Input 中说有 300 行输入,且 M 属于 (0, 9),E 属于 (1, 30),刚好有 300 种情况,我们会去朝...原创 2018-02-17 22:49:52 · 391 阅读 · 0 评论 -
算法竞赛入门经典(紫书)第四章——Spreadsheet Tracking UVA-512
题意: 模拟表格的操作:插入行、列,删除行、列,交换格子 题目要求对给出的格子坐标,输出一系列操作后的格子坐标或 GONE。思路: 我们的思路是记录下操作,然后对每一个坐标进行一遍操作。先来讲记录操作,我直接用 int 数组记录的,可以将操作进行编号,将编号记录在每一行的 0 下标位置处,如 EX 为 1, DC 为 2, DR 为 3, IC 为 4, IR 为 5,int 数...原创 2018-02-26 19:28:57 · 312 阅读 · 0 评论 -
算法竞赛入门经典(紫书)第四章—— The Dole Queue UVA-133
题意: 将 N 个数写在一个环上,顺时针数 k 个得到 x1,逆时针数 m 个得到 x2,将 x1 和 x2 输出,如果相同则只输出其中一个,输出后将其从环上删除。如此反复。思路: 将环想象成数组,在数组上演示题意的过程,即有两个指针,一个向右移动,一个向左移动,当向右移动的指针移到结尾时再移动就会落在开头位置,当向左移动的指针移动到开头位置时,再移动就会移动到结尾处。 一开始我想的...原创 2018-02-21 17:42:08 · 314 阅读 · 0 评论