数据结构与算法
安菲尔德的门柱
这个作者很懒,什么都没留下…
展开
-
XOR加密初识
XOR加密利用了两次异或操作仍为原值的特性。通过一个密钥,将明文与密钥进行异或操作,从而对明文加密,解密时再将密文与密钥进行一次异或操作就能恢复出明文。 下面是C语言简单模拟: #include #include #define KEY 'K' //密钥 int main(){ int orig_char,new_char; while((orig_char=getc原创 2013-09-09 21:20:31 · 855 阅读 · 0 评论 -
poj1250 Tanning Salon
#include #include void main(){ int n; char s[53],c[26]; int i,l,count,leave; scanf("%d",&n); while(n != 0 && n<=20){ memset(s,'\0',sizeof(s)); memset(c,'0',sizeof(c)); scanf("%s",s); l=s原创 2013-10-19 10:30:22 · 556 阅读 · 0 评论 -
poj1484 Blowing Fuses
#include #include #include void main(){ int num,operation_num,max,capacity,curr,i,count=0,total; int device_Ampere[30]; char flag; char device_Flag[30]; scanf("%d %d %d",&num,&operation_num,&cap原创 2013-10-19 10:28:01 · 608 阅读 · 0 评论 -
poj1007 DNA Sorting
1007题要求输入m个长度为n的并且只包含A、C、G、T的字符串,将这些串按照最有序到最无序的顺序排列好输出。 我的想法是先声明一个二维数组,然后将字符串存入这个二维数组,再将字符串的字符与该串后面的字符比较如果前面的大,计数+1,然后入每行计数的这个数组元素排序,排序的同时给字符串也根据下标排序。但是频繁调用strcpy函数直接导致第一次提交超时了,后来我改用一个数组存入每个字符串的下标,在对原创 2013-09-29 21:20:42 · 387 阅读 · 0 评论 -
poj2028 When Can We Meet?
2028题要求先读入两个数字,第一个表示总人数,第二个表示开始会议的最低人数,然后依次读入每个人的日期,统计找出最近的符合要求的日子并输出,没有则输出0。 我的思路是将日期统计存入一个数组,数组下标号对应日期,然后扫描数组获取最大值,再扫一遍数组,找到对应的日期输出。感觉还是有点繁,最后应该一边扫一遍就行。 #include #include void main(){ char s[202原创 2013-09-28 17:19:59 · 614 阅读 · 1 评论 -
poj2572 Hard to Believe, but True!
2572判断两个数逆置相加得到结果再逆置,判断给的等式是否正确,这题几乎和1504题一模一样,就多加个输入的分割,这次0MS过了。 代码如下: #include #include char a[8],b[8],c[10]; int reserve(char *s){ char str[7]; int i; char ch; strcpy(str,s); int len=str原创 2013-09-28 17:03:27 · 576 阅读 · 0 评论 -
poj1504 Adding Reversed Numbers
1504题读入两个加数,将数字逆置后相加,得到的结果再逆置输出。 这次字符串和数字的转换用上了atoi()和sprintf(),但是我的代码质量写的很差,110MS险过。 #include #include #include int reverse(int value){ int num,i,len; char s[20]; char ch; sprint原创 2013-09-27 20:33:43 · 514 阅读 · 0 评论 -
poj1350 Cabric Number Problem
1350题给定一个四位数(4位数字不全相同),得到四个数字排出的最大值和最小值,最大值减最小值后得到的数字继续重复,直到所得的差为0或者6174结束。 此题感觉自己的字符串转与数字的转换做繁了,可以用atoi函数,另外自己开始没有判断输入的是否是四位数,导致提交时提示output limit exceeded,搞了1个小时才发现这问题,读题还是非常重要啊! #include #includ原创 2013-09-27 20:19:20 · 583 阅读 · 0 评论 -
poj1008 Maya Calendar
玛雅历的换算:先计算出天数,然后换算成Tzolkin表示法,注意haab表示第19个月时只有0-4,还有注意单词表拼错了,我拼错了白WA了。 #include #include typedef struct h{ int h_year; int h_day; char h_month[10]; }Haab; typedef struct t{ int t_原创 2013-10-13 22:47:12 · 414 阅读 · 0 评论 -
poj1562 Oil Deposits
‘@’代表有油,‘*’代表没有,横、竖、斜8个方向有相邻的‘@’就继续向8个方向搜索,并将‘@’置成'*',防止再次搜索。 这题如果用getchar()过滤回车会一直WA,弄了很久,开始一直以为结果错了,后来看了discuss才发现的。坑。。。 #include #include int n,m; int count; char area[200][200]; void dfs(int原创 2013-10-13 11:34:53 · 382 阅读 · 0 评论 -
(二)poj1318
先做些字符串的,感觉字符串的思路比较容易理解,就是特别找注意一些细节上的处理。 这题先输入字典,然后读入待匹配的混乱的字符串,将混乱的字符串调整后如果与字典中的单词匹配,则输出提示的但是,类似于单词拼写检查。 思路是将字典中的串和带检查的串都按字母顺序排序,如果排序后的串和字典中排序后的串匹配,则存在。 #include #include #include char dic[10原创 2013-09-26 20:46:08 · 421 阅读 · 0 评论 -
起步——开始做点算法水题(一)poj1936
博客半个月没写了,实习以来前一段时间相对来说是最忙的了。最近挺纠结的一件事就是将来就业的方向,想了很久都不知道以后究竟要干什么。不管那么多,先做点ACM水题提高一下自己的能力吧。 记得刚进大学身边就有不少同学投入了ACM的学习中,我非常佩服他们,对于平时的上机作业对他们来说基本都是小菜一碟,而我却绞尽脑汁也不一定能得到一个满意的答案。再到找实习时,那些ACM大牛们基本都能拿到很好的公司的实习资格原创 2013-09-26 18:26:55 · 450 阅读 · 0 评论 -
poj2328 Guessing Game
两个猜数,一个说数字(1-10之间),另一个给提示高了还是低了,等到提示数字猜中时,下结论说正确的人是否撒谎。 #include #include void main(){ int num,low=0,high=11; char s[10]; scanf("%d",&num); memset(s,'\0',sizeof(s)); while(0 !原创 2013-10-10 21:44:27 · 398 阅读 · 0 评论 -
poj1321 棋盘问题
要求在不规则棋盘上摆放K个棋子,使得横竖行列上都只有唯一的一颗棋子,求出有多少种摆法。 建立一个n*n的区域,记录可以放棋子的地方,然后进行搜索,求出满足要求的方法,用的是深度优先搜索 #include #include int lines;//行(列)数 int chess_num;//摆放的棋子数 int count;//计数器 int placed_num;//当前已摆放的棋子 c原创 2013-10-10 21:38:45 · 390 阅读 · 0 评论 -
POJ1002 487-3279 WA了好几回 TUT
1002题描述了为了便于记忆,经常将电话号码(数字)转换成英文字母,由于英文字母和数字是多对一的关系,因此不同的表示可能代表的是同一个电话号码,此题给一定个数的电话号码,要求将任何号码转换成统一的格式,统计同样的号码出现的次数,如果转换后有相同的号码,按照XXX-XXXX的格式输出7位数字,后面跟上出现次数,如果没有重读的,则输出No duplicates. 我想说此题真是坑啊,巨坑!花了我两天原创 2013-10-09 20:48:57 · 604 阅读 · 0 评论 -
poj1656 Counting Black
1656题给定一个100*100初始化颜色为白色的棋盘,输入X、Y左边及长度L画正方形,有两种颜色,白或者黑,在指定的区域涂上色后,输入TEST,同样也给出X、Y和长度L,求TEST区域内的黑色的小方格个数。 我的想法是设置白色为0,黑色为1,根据指令用二重循环,在二维数组指定区域置成0或1,当输入TEST时,扫描一遍test区域获得黑色小方格数目。 #include #include原创 2013-09-29 21:03:06 · 371 阅读 · 0 评论 -
pioj2159 Ancient Cipher
#include #include #include char a[101],b[101]; int m[26],n[26]; void getNum(char *a,char *b){ int i,len1,len2; len1=strlen(a); len2=strlen(b); for(i=0;i<len1;i++) m[a[i]-'A']原创 2013-10-19 10:32:13 · 575 阅读 · 0 评论