小紫书 uva
文章平均质量分 58
liujc_
这个作者很懒,什么都没留下…
展开
-
例题4-2 uva 489 - Hangman Judge
背景:wa一次,没有检查是否已经输了或者赢了,及时退出循环。。。发现在一种情况就是比如cheese asdfasdfsfcheese 这样也会被判赢,,才发现是没有及时推出。。。学习:对于一个程序来说,最重要的是先搭好整个程序的框架,将必要的功能函数写上,内部内容可以等一会在实现,框架先搭起来,使用自顶向下的顺序。还有就是对于这种题目来说要在已经有了结果的时候懂得及时退出并输原创 2015-01-27 12:03:59 · 594 阅读 · 2 评论 -
例题4-4 uva213
通过本题学习到了对于可能占好几行的输入,可以写一个自定义函数来过滤掉空格和回车。。还有就是二进制转化成十进制,,并且利用位运算来更快的判断边界条件。。二进制中要巧妙的运用位运算。#include#includechar code[10][1<<8];char readchar(){ char ch=getchar(); if(ch != '\n') return ch; else原创 2015-01-30 20:22:22 · 625 阅读 · 0 评论 -
uva 101 例题5-2 vector以及string的简单用法
本题由于只知道木块的堆数而不知道每一堆的具体个数上限,所以我们可以采用STL中的vector。在使用之前我们必须加上#include。vector有几个基本的用法,例如我们有一个a是vector,那么我们可以用a.size()来获取a的大小,用a.resize(n)来将a的大小改变成n,用a.push_back(num)来对a的末尾添加一个元素值为num,用a.pop_back()来删除最后 一个原创 2015-02-09 10:08:20 · 697 阅读 · 0 评论 -
uva 201 习题4-2
思路就是将每条边的所连续的长度给保存起来,然后找出所能构成正方形的规律。。接着遍历数组固定v来找对应的h看是否能满足构成正方形的条件。。对于这个图来说,假设我们固定V13来看,当V13 V23 H31 H41 都满足>=1时就可构成边长为1的正方形。当V13 V33 H22 H42都满足>=2时也可构成2的正方形。当V13 V43 H13 H43都满足>=3时也可构成3的正方形。仔细观察每原创 2015-02-07 19:56:55 · 737 阅读 · 0 评论 -
uva 253 习题4-4
一开始太脑残以为直翻一次。。。然后妥妥的WA了。。后来才明白要枚举骰子的各种情况。。 可以采用的方法就是将每个面转到第一个面上,然后固定此时的第一个面以及相对的面,进行左右旋转,每个面都有四种情况,这样6个面就是6*4=24种。。如果有一样的那么就是一样的骰子。。本题实现起来不难就是思路一开始没有打开。。。似乎知道要用枚举但不知道怎么枚举orz。。总结下经验就是对于一道枚举题来说首先要分析原创 2015-02-07 19:16:13 · 668 阅读 · 2 评论 -
uva 10474 例题5-1
直接用sort 水过。。我在实现查找的时候是采用遍历数组的方式。。书上给出了lower_bound这个函数,百度学习了一下这个函数,,简单来说他就是利用二分查找来实现在有序的数组中查找大于或等于给定数的第一个位置。。返回值也就是大于或等于所要找的数的第一个位置。。于是在书上给出的解法中必须验证返回来的数字是不是跟要找的数相等,如果不等其实就是在该数组中没有要找的这个数。。接下来是引用一原创 2015-02-09 09:51:18 · 530 阅读 · 0 评论 -
uva 10815 set的用法
本题主要学习的就是set的用法。。也知道set中元素有着从小到大排好序的性质。。代码,详情见注释#include#include#include#include#includeusing namespace std;set dict;int main (){ string s,buf; while (cin >> s) { int i; for(i=0;i<s原创 2015-02-09 20:51:21 · 841 阅读 · 0 评论 -
uva 156 5-4
本题主要学习的就是map的用法。。map就是一个映射。。可以从string对应到int 或者之类的都可以。。因为题目中说输出不能通过字母重排而在文本中找到另一个单词的单词。。那么就意味着这样的单词(字母组合)只能在文本中出现一次,,那么我们将每个单词的所有字母进行标准化也就是一个排序,如果有个单词排序后与另一个单词排序后的字符串一样,那么这两个就是重复的。。于是乎我们可以建立单词(字母组合)与原创 2015-02-09 22:16:56 · 525 阅读 · 0 评论 -
uva 12096 例题5-5 map vector set stack 混用
看了书上的做法,学习了多种容器如何一起使用。。一开始完全不适应多种容器感觉要晕了。。看了好久才大概理解了下,,将其代码复述了出来。。思路其实就是讲每个集合对应一个唯一ID,之后有了这个ID就可以找到这个集合,从而可以找出这个集合里面有几个元素。这里也利用了集合的一个特点,就是里面元素都是没有重复的。也就是说如果将一个集合里面已经有的元素插入到集合中时,这个集合其实是没有改变的。。主要学习的原创 2015-02-10 23:43:49 · 558 阅读 · 0 评论 -
例题4-5 uva 512 - Spreadsheet Tracking
本题主要就在于模拟删除和插入等操作,还有一点就是将位置信息通过数字的方式存储在对应的数组元素之中,巧妙地利用数组下标,简单的实现了原位置与当前位置的对应关系。#include#include#define Max 10000int d[60][60],a[100],ans[60][60],d1[60][60];char s[5];int r1,c1,r,c;void copy(char原创 2015-01-31 17:33:52 · 658 阅读 · 0 评论 -
3-11 uva 1588 - Kickdown
思路:将短的字符串一直右移看是否可以满足,再将长的字符串右移看是否满足,取两者中所需最小的位数。。这样就可以找到。。之前wa了两三次,是因为没有判断第一个字符串是比较长还是比较短的。。。还有就是在各种情况的分析吧。。。感觉我写的估计比较麻烦了#include#includechar a[105],b[105];int judge(int x,int y) //x是短的 {原创 2015-01-28 10:54:12 · 748 阅读 · 0 评论 -
例题4-1 uva Ancient Cipher
书上例题。。。主要是学习下sort 的用法 之前用的都是qsort#include#include#includeusing namespace std;char a[104],b[104];int cnt1[26],cnt2[26];int main (){ while (scanf("%s%s",a,b)==2) { memset(cnt1,0,sizeof(cnt1))原创 2015-01-26 23:15:35 · 594 阅读 · 0 评论 -
3-10 uva 1587 box
背景:昨晚开始想这个题目,感觉思路不是很清晰,但还是动笔了,几组过了之后交了果然wa,觉得思路是在非常混乱。就去看了人家的题解。。。。结果后来还因为访问非法内存而错了。。。学习:此题主要在于判断是否最后可以合并为三个矩形,如果可以再对情况进行枚举,,,或者用一个更快的方法就是用sort将三组数据进行排序,找出满足长方体的规律。感觉自己还是太渣渣渣了,好多该掌握的都还没掌握清楚。。。 这题也原创 2015-01-26 19:32:40 · 801 阅读 · 0 评论 -
3-8 uva 202 Repeating Decimals
背景:一开始没有什么头绪,只知道要模拟除法,甚至想用找周期的方法,发现根本不可行。。。。觉得自己数学简直是个渣,,连余数出现第二次则开始进入循环都想不到。。。(感觉这题要收起来,等快要忘记的时候再拿出来写一写orz)学习:就是利用模拟除法的方法,然后记录余数,若c这余数出现第二次则进入循环,最后计算循环节长度时要减去之前没有进入循环的位数。#include#includeint u原创 2015-01-25 20:06:15 · 537 阅读 · 0 评论 -
3-9 uva 10340 All in All
背景:wa了第一次后,不知道哪里错,又改了改,一直wa,心想妈的一道水题怎么都这样,看来要跪。结果最后发现是Yes打成YES。心中万般草泥马飘过。说多了都是泪。本题主要是按顺序查找,找到后记录下位置,从下一个位置开始找后面的字符。#include#includechar a[100001],b[100001];int main (){ while(scanf("%s %s",a,b)原创 2015-01-25 19:32:54 · 430 阅读 · 0 评论 -
3-7 uva 1368 - DNA Consensus String
背景:最早题目读错以为是在那几个中选一个,结果是自己造一个····改完wa一次,我感觉不会是最后一个空行的问题吧,改了还是wa。觉得不科学,发现样例中都是下一组的长度比上一组长,感觉自己的有点问题,试了一下果然下一组比上一组短的话就会出错。果然加了memset之后a了。学习:本题只要找出每一列hamming值的和最小的字母这样就能保证找出来的整个序列最小,并且利用一个数组ACGT按字典序,这样原创 2015-01-24 13:09:53 · 661 阅读 · 0 评论 -
3-3 uva 1225 - Digit Counting
此题为小紫书习题3-3;背景:代码一次过,感觉很爽快!!!学习:此题的关键在于熟练使用sprintf 将数字打印到字符串中,将数字转化成字符串进行处理。#include#includechar s[10005];int a[12];int main (){ int t; scanf("%d",&t); while (t--) { int n; int i,j;原创 2015-01-22 22:34:31 · 705 阅读 · 2 评论 -
uva 1586 - Molar mass
本题为小紫书的57页第三题主要在于判断字母还是数字,若为数字要连续读入整数,如果下一个还是数字 就要i++,如果不是就跳出循环。如果一个是字母下一个也为字母就需要当做把这个字母直接读入一个,要注意的就是最后一个如果是字母也要当做一个。// 连续读入整数 直到不再为数字 先记下之前的字母 #include#include#includechar s[100];int mai原创 2015-01-22 13:26:50 · 2015 阅读 · 1 评论 -
3-4 uva 455
背景:wa两次因为空行问题····· 审题有很大的问题特别是格式方面学习:本题的关键在于字符串的各种顺序,与例题3-6类似,借鉴过来,需要将字符串形象的往左移遍历各种顺序,直到找到一种排序与原字符串完全相同则此为最小周期。还有就是格式问题··· 题目中指出两个output之间需要空行,意味着最后一个output不要空行。#include#includechar s[85];原创 2015-01-22 23:31:55 · 680 阅读 · 1 评论 -
poj 3295 专题第五道
wrong了好多次。。我才发现我把E没注意 以为是异或,其实是判断是否相等。。。。orz这题应该不能算是自己独立思考出来的,之前有思考过但是因为我是从正序想的所以导致没有什么头绪,,看了下解题报告的思路,说要用stack,刚好小紫书正要学,就先放下了,小紫书学了后,来做这题。当然我是直接用STL里面的orz。。思路主要就是要利用题目的特性,从后往前读字符串是最直观的,然后对于pqrst来说原创 2015-02-10 23:57:18 · 546 阅读 · 0 评论