【设计一个动态规划算法的四个步骤】
1、刻画一个最优解的特征。
2、递归地定义最优解的值。
3、计算最优解的值,通常采用自底向上方法。
4、利用计算出的信息构造一个最优解。
【最优子结构(optimal substructure)】
问题的最优解由相关子问题的最优解组合而成,而这些子问题可以独立求解。
【动态规划两种等价实现方法】
1、 带备忘的自顶向下法(top-down...
分类:
其他好文 时间:
2014-08-30 15:12:29
阅读次数:
219
有些人说 归并排序的递归版本实用性差 可读性强非递归版本恰好相反我觉得 也没那么明显差距吧....其实非递归版本也不难理解的假如 我们需要进行排序的数组的长度为 len 每次的子排序数组区间为size那么我们首先将它拆成 len个size为1的小区间 然后2个相邻的进行合并merge排序 这时候 你...
分类:
其他好文 时间:
2014-08-27 20:27:18
阅读次数:
346
题目:
链接
解答:
自底向上求解。left_max right_max分别返回了左右子树的最大路径和,如果左右子树最大路径和小于0,那么返回零, 用这个最大路径和和根节点的值相加,来更新最大值,同时, 更新返回该树的最大路径值。
代码:
class Solution {
public:
int max = INT_MIN;
int maxPathSum(TreeNode *...
分类:
其他好文 时间:
2014-08-18 23:39:53
阅读次数:
397
概述:
动态规划是通过组合子问题的解而解决整个问题的。
动态规划适用于子问题不是独立的情况,也就是各子问题的包含公共的子子问题。
动态规划对每个子问题只求解一次,将其结果保存在一张表中。
动态规划通常用于最优化问题。
动态规划的设计步骤:a.描述最优解的结构b.递归定义最优解的值c.按自底向上的方式计算最优觖的值d.由计算出的结构构造一个最优解
15.1钢条切割...
分类:
其他好文 时间:
2014-08-18 14:34:02
阅读次数:
367
动态规划的基本思想:将一个问题分解为子问题递归求解,且将中间结果保存以避免反复计算。通经常使用来求最优解,且最优解的局部也是最优的。求解过程产生多个决策序列,下一步总是依赖上一步的结果,自底向上的求解。动态规划算法可分解成从先到后的4个步骤:1. 描写叙述一个最优解的结构,寻找子问题,对问题进行划分...
分类:
其他好文 时间:
2014-08-15 14:30:39
阅读次数:
116
伸展树和AVL树不一样,伸展树并不保证每次操作的时间复杂度为O(logn),而保证任何一个m个操作的序列总时间为O(mlogn)。伸展树的基本思想是:每个结点被访问时,使用AVL树的旋转操作把它移动到根。由于旋转是自底向上的,所以需要设置父亲指针,而不像AVL树那样以儿子为轴旋转。伸展操作(spla...
分类:
其他好文 时间:
2014-08-14 23:30:16
阅读次数:
280
基于FPGA的可显示数字时钟,设计思路为自底向上,包括三个子模块:时钟模块,进制转换模块,led显示模块。所用到的FPGA晶振频率为50Mhz,首先利用它得到1hz的时钟然后然后得到时钟模块,把时钟模块输出的时、分、秒输入到进制转换模块后得到十进制的值再输入到led显示模块,该工程已经在FPGA开发板上亲测可用。...
分类:
其他好文 时间:
2014-07-15 13:08:35
阅读次数:
335
分享下有关Python文件遍历的两种方法,使用的OS模块的os.walk和os.listdir实现。关于Python的文件遍历,大概有两种方法,一种是较为便利的os.walk(),还有一种是利用os.listdir()递归遍历。方法一:利用os.walkos.walk可以自顶向下或者自底向上遍历整个...
分类:
编程语言 时间:
2014-07-08 11:54:10
阅读次数:
184
有人说,要深入理解计算机,有两个途径:自底向上和自顶向下。我想,对于自己,更适合从最基本的开始,由底层向高层前进。
所以, 先拿汇编语言下手吧!
说到汇编语言,记得刚开始接触的时候,那是相当的令人难受,所有的指令我都认识,但组在一起就不认识了。直到后来,照着《一个操作系统的实现》做了一个小OS,才真正不晕了。...
分类:
其他好文 时间:
2014-06-24 23:00:54
阅读次数:
256
(二叉)堆是一个数组,是一颗近似完全二叉树,分为大顶堆&小顶堆。表示堆的数组A有两个属性:(1)A.length表示数组元素的个数;(2)A.heap-size表示有多少个堆元素存储在数组A中。更多的关于堆的性质的介绍:算法导论第三版:p85-p89、编程珠玑:p141-p145。
堆的操作主要包括堆插入、堆删除两个,而堆插入设计到FixUp操作(自底向上调整),堆删除涉及到FixDown操作(自顶向下调整,大顶堆时对应算法导论上的MAX-HEAPIFY操作)。
本文主要给出的是大顶堆和小顶堆的基本操作的C...
分类:
其他好文 时间:
2014-06-22 13:58:41
阅读次数:
158