算法分析与设计
文章平均质量分 95
数据结构与算法-程序设计的两大核心!
Raise
记录下来的目的主要是为了加深自己的理解,如果还能对一两个人起到抛砖引玉的作用,就再高兴不过了。
展开
-
卡特兰-HDU1515-HDU2067
题目:一个栈的入栈序列是A、B、C、D、E,则栈的不可能的输出序列()A、EDCBA B、DECBA C、DCEAB D、ABCDE题目从手工操作方面比较容易理解,需要借用一个辅助栈,先理一遍思路:先看B答案:(0)实始态入栈序列是ABCDE i出栈序列是CDBEA j栈:|-...原创 2018-12-30 11:24:31 · 13804 阅读 · 0 评论 -
二叉树
序:二叉树作为树的一种,是一种重要的数据结构,常见的二叉树有:满二叉树:除叶子结点外,所有结点都有两个结点,叶子结点的left,right为NULL.哈夫曼树:又称为最优二叉数,是一种带权路径最短的树。哈夫曼编码就是哈夫曼树的应用,可以用来进行编码压缩.哈夫曼树的构造见哈夫曼树的构造完全二叉树:除了最底层的叶子结点之外,其余层全满,而且叶子层集中在左端.堆是一种特殊的完全二叉树(全满或者差一...原创 2018-12-30 11:25:01 · 31799 阅读 · 4 评论 -
啊哈!算法:三个算法问题(左旋转,大数据,变位词集)
无意中找到一本书《编程珠玑》,刚看到第二章,感觉作者讲解方式比较独特并且很有意思,在这里记录第二章的三个问题,以下是这三个问题。三个问题 A.给定一个包含32位整数的顺序文件,它至多包含40亿个这样的整数,并且整数的次序是随机的,请查找一个此文件中不存在的32位整数(至少必有一个遗漏,为什么?)。在有足够内存的情况下,你会如何解决这个问题?如果可以使用若干外部临时文件但可用主存却只有上...原创 2018-12-30 11:23:06 · 23807 阅读 · 0 评论 -
图的深度(DFS)/广度优先搜索算法(BFS)/Dijkstra
类比二叉树先序遍历与图深度优先搜索在引入图的深度优先搜索之前,为了更加容易理解.先考究一种特殊的图---二叉树的深度优先搜索算法---即二叉树的递归遍历方法.二叉树的前序遍历算法: void TreeWalk(node* root){ if(root) { visit(root); TreeWalk(root->left); TreeWalk(root-&...原创 2018-12-30 11:24:47 · 12395 阅读 · 4 评论 -
字符串匹配(BF,KMP,BM)
一.暴力匹配法 最原始,最直观的办法,就是蛮力搜索法,思路是这样子的,需要在str1中寻找str2,那么可以先在str1中查找str2[0],如果找到,则比较往后的字符,如果全匹配,则返回一开始的符号,如果不匹配,继续在str1中找str2[0],一直重复以上步骤,直至找到为止.分析这种办法的时间复杂度.在最差的情况下,例如长度为m的字符串0000000000,和长度为n的...原创 2018-12-30 11:24:53 · 3766 阅读 · 1 评论 -
微软过桥问题Dijkstra/倒水问题
微软过桥问题 微软的过桥问题:4个人在晚上过一座小桥,过桥时必须要用到手电筒,只有一枚手电筒,每次最多只可以有两人通过, 4个人的过桥速度分别为1分钟、2分钟、5分钟、10分钟,试问最少需要多长时间4人才可以全部通过小桥?思路:刚一看到这道题,思路比较狭窄,就拿着笔把人移过来再移过去,第一次做出的答案是19(错误答案).后来上网上去找参考答案,发现是17.网上的答案只给出得到17分钟...原创 2018-12-30 11:23:26 · 19131 阅读 · 1 评论