算法和数据结构
文章平均质量分 85
iteye_3126
这个作者很懒,什么都没留下…
展开
-
找寻二叉树中两个节点的公共父节点中最近的那个节点
情况1. 节点只有left/right,没有parent指针,root已知情况2. root未知,但是每个节点都有parent指针情况3. 二叉树是个二叉查找树,且root和两个节点的值(a, b)已知虽然情况一是第一个情况,但是看上去比较复杂,我们放到最后来说,先从第二个情况开始说。 ...原创 2011-06-17 14:47:00 · 154 阅读 · 0 评论 -
动态规划找零问题O(nk)
主要思路是,用一个数组coinsUsed[]来保存找i分钱所需的硬币数,(i==maxchange就是我们正在寻找的解),用一个数组lastCoin[]来保存哪一个硬币是最后用来得到最佳找零方案的信息。coins[] 用来记录硬币零钱有哪几种,differentCoins记录下coins[]的长度。maxChange记录最后的要兑换的零钱数。该算法复杂度为O(NK),N为不同面值的硬币数目...原创 2011-07-06 16:41:49 · 412 阅读 · 0 评论 -
深度优先搜索算法(回溯法)入门
搜索算法搜索是人工智能中的一种基本方法,是一项非常普遍使用的算法策略,能够解决许许多多的常见问题,在某些情况下我们很难想到高效的解法时,搜索往往是可选的唯一选择。按照标准的话来讲:搜索算法是利用计算机的高性能来有目的的穷举一个问题的部分或所有的可能情况,从而求出问题的解的一种方法。搜索虽然简单易学易于理解,但要掌握好并写出速度快效率高优化好的程序却又相当困难,总而言之,搜索算法灵活多...原创 2011-07-12 14:34:42 · 733 阅读 · 0 评论 -
回溯法
常用算法设计方法之回溯法(1) 回溯法也称为试探法,该方法首先暂时放弃关于问题规模大小的限制,并将问题的候选解按某种顺序逐一枚举和检验。当发现当前候选解不可能是解时,就选择下一个候选解;倘若当前候选解除了还不满足问题规模要求外,满足所有其他要求时,继续扩大当前候选解的规模,并继续试探。如果当前候选解满足包括问题规模在内的所有要求时,该候选解就是问题的一个解。在回溯法中,放...原创 2011-07-12 14:44:09 · 107 阅读 · 0 评论 -
回溯法(2)
一、 回溯的基本思想是: 从一个给定的起始位置,我们希望到达一个目的位置。我们重复地进行选择(可能是猜测)下一个位置应当是什么。如果一个给定的选择是有效的, 即新的位置可能位于通向目的位置的途径中,则前进到这个新的位置,然后继续。 如果一个给定的选择通向了死胡同 ,则回到前面的位置,进行其他的选择。回溯就是通过一系列位置选择到达目的位置,并且在不能到达目的位置时反向退回的策略。 ...原创 2011-07-12 16:10:42 · 194 阅读 · 0 评论 -
java生成随机数
一、利用Math.Random()方法来生成随机数。在Java语言中生成随 机数相对来说比较简单,因为有一个现成的方法可以使用。在Math类中,Java语言提供了一个叫做random的方法。通过这个方法可以让系统产生随机 数。不过默认情况下,其产生的随机数范围比较小,为大于等于0到小于1的double型随机数。虽然其随机数产生的范围比较小,不能够满足日常的需求。如 日常工作中可能需要产生整数的随机...原创 2011-07-13 14:10:59 · 109 阅读 · 0 评论