UVA
Bread Sir
记录算法之路
展开
-
UVA1339 Ancient Cipher(排序)
题目: 题目很长,但是大概的意思就是: 给定两个长度相同且不超过100的字符串,判断是否能把其中一个字符串的各个字母重排,然后对26个字母做一一映射,使得两个字符串相同。分析: 因为字母可以重排,所以位置不重要,而字母出现的次数是重要的。这样先统计一下两个字符串中各个字母出现的次数,然后进行排序,只要两个数组排序后的结果相同,那么输入的两个串就可以通过重排和一一映射变得相同。代码如下:#inc原创 2017-05-26 10:19:57 · 1325 阅读 · 0 评论 -
UVA489 Hangman Judge(字符串处理)
题目描述: 题目大意就是先给一个单词,然后每次可以猜一个字母,如果给定单词里有那个字母,单词中的所有该字母都会显示出来,如果没有这个字母,机会就少一次,一共7次机会,错了7次即为失败, 而如果单词中所有字母都显示出来即为成功,其他则为放弃。分析: 采用自顶向下的方式,模拟一下这个刽子手游戏的过程即可。代码如下:#include<cstdio>#include<cstring>using原创 2017-05-26 10:33:56 · 501 阅读 · 0 评论 -
UVA133 The Dole Queue (模拟)
题目描述: 分析: 初始时用一个数组来表示人员的编号,如果一个人被选中,则用0来表示。模拟一下即可。代码如下:#include<cstdio>using namespace std;const int maxn = 20+5;int N, k, m;int a[maxn];/*移动函数,以k作为标记表示顺时针还是逆时针*/int move(int p, int k, int t){原创 2017-05-26 11:04:49 · 310 阅读 · 0 评论 -
UVA213 Message Decoding(二进制)
题目描述: 题目大意:有一些串: 0,00,01,10,000,001,010,011,100,101,110,0000,0001,…,1101,1110,00000,…首先是长度为1的串 ,然后是长度为2的串,以此类推,相同长度的后一个串等于前一个串加1,而且不存在全为1的串。首先输入一个编码头 , 比如 AB#TANCnrtXc ,那么依次对应上面的01串,比如0对应A,00对应B,01对应#原创 2017-05-26 19:56:52 · 629 阅读 · 0 评论 -
UVA11582 Colossal Fibonacci
问题描述:这题花了我一天时间调,还是自己渣,很多细节都没注意。分析:因为要求的是f(a^b) mod n,那么就可以设F(i) = f(i) mod n。 那么f(a^b) mod n = F(a^b)。这里有一个关键的地方,f(i) mod n 会重复循环,为什么会这样呢?因为斐波那契数列的每一项都只和前两项有关。所以共有n^2个可能,最后一定会出现循环节,也就是说余数最多n种,则最多n^2项就原创 2017-04-14 15:29:38 · 208 阅读 · 0 评论