摘要:建议先看看前言:http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html这个案例也比较简单,最长公共子序列(LCS),网上的分析非常多,给力啊!按照上一篇总结所说的,找状态转移方程:所以按照所给方程,写代码的工作就非常非常简单轻松了:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869/*Author: Tanky W.
阅读全文
摘要:建议先看看前言:http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html这一节可以看到《算法导论》学习总结 — 16.第15章 动态规划(1) 基本入门的补充。采用动态规划的最优化问题的两个要素:最优子结构和重叠子问题。先看看最优子结构:在第17篇总结时,装配线调度问题中,已经设计到了最优子结构,证明最优子结构问题可以用书上说的“剪贴技术”,即假设存在更优的解,来反正最优解矛盾。再看看重叠子问题:当一个递归算法不断的调用同一个问题时,我们说该最有问题包含“重叠子问题”。上面这句话不好理解?看看下面这个比较:递归算法:自顶.
阅读全文
摘要:建议先看看前言:http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html原来打算把算法导论在7月份前搞定,现在已经过去一个多月了,才只看到第15章,后面也只零散看了一些,不知道假期前能否看完。。。够呛啊,马上要期末考试了,上学期GPA不到2,被学位警告了,虽说以后不学这个专业了,但起码成绩单上也不能有挂科是吧。。。要是平时一点不看,考前靠春哥,曾哥,关公哥都不行啊。。。这进度,郁闷!尽力吧!顺便还是说两句话:1.有些书上分析的相当好了,我不想做画蛇添足的人,所以有的地方我会适当省略,当然也不是说我总结的地方就是书上讲的不好
阅读全文
摘要:第十四章我想放在后面再看,先搁下。希望大家总结的一些文章也能向我推荐下,大家互相学习。首先,还是建议看看前言:http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html其次,阿门,感谢老天送给了我们这么一本圣经,看了这一章,再次感受到了《算法导论》分析问题的精辟,强悍的魅力。Orz, Orz,各种Orz。这一章讲的是动态规划,学算法的朋友,尤其是搞ACM的,对这个策略一定非常熟悉,所以这个算法网上的分析讲解教程也是铺天盖地,大家可以多搜几篇学习学习。动态规划(Dynamic Programming,简称DP)是通过组合子问.
阅读全文
摘要:建议先看看前言:http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html这一章把前面三篇的代码总结起来,然后推荐一些网上红黑树的优秀讲解资源。代码:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899.
阅读全文
摘要:建议先看看前言:http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html这一篇是关于红黑树的结点删除。依然和上一篇的插入一样,先用到了BST的删除结点函数,然后做相应的调整。不过,这里的调整思路颇为新颖。还是来看看略微改变后的删除结点函数:1234567891011121314151617181920212223242526Node* RBTreeDelete(RBTree T, Node *z){ Node *x, *y; // z是要删除的节点,而y是要替换z的节点 if(z->lchild == NULL ||
阅读全文
摘要:建议先看看前言:http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html插入结点用到了上一次BST的插入函数(做了一点添加),并且在此基础上增加了保持红黑性质的调整函数。还是先看看插入函数:123456789101112131415161718192021222324252627282930313233343536void RBTreeInsert(RBTree &T, int k){ //T->parent->color = BLACK; Node *y = NULL; Node *x = T; No
阅读全文
摘要:建议先看看前言:http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html本章内容颇多,所以我分四篇来写,这一篇是关于一些基本的概念和选择,中间两篇分别是插入和删除,最后一篇是总结。上一章总结过BST(http://www.wutianqi.com/?p=2430),BST在高度较小时,可以获得很好的性能(因为BST的操作的平均时间为O(lgn)),但是在高度较大时,则性能就一般。而红黑树“近似平衡”,于是降低了平均时间,再者,红黑树并不追求“完全平衡”——它只要求部分地达到平衡要求,降低了对旋转的要求,从而提高了性能。谈到
阅读全文
摘要:建议先看看前言:http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html推荐在看算法导论的这一章之前先看看严蔚敏老师在《数据结构》上的二叉查找树。整体来说二叉查找树不难,就是插入和删除节点时让人纠结,我就是在删除节点时各种纠结了。二叉树执行基本操作的时间与树的高度成正比。首先说下二叉查找树的性质:设x为二叉查找树中的一个结点。如果y是x的左子树中的一个结点,则key[y]<=key[x];如果y是x的右子树的一个结点,则key[y]>=key[x]。注意这个性质,和堆对比下,还是有区别的,并且这个性质表示二叉查
阅读全文