一、青蛙跳台阶&斐波那契数列 1、问题 一只青蛙跳台阶,每次可以跳 1 层或 2 层。青蛙跳到 n 层一共有多少种跳法? 2、思想 先把问题规模缩小,考虑 n = 1时,n = ...
用递归求解问题时,反复的嵌套会浪费内存。而且更重要的一点是,之前计算的结果无法有效存储,下一次碰到同一个问题时还需要再计算一次。例如递归求解 Fibonacci 数列,假设求第 n 位 从 开始 的值,C 代码如下: 上面的代码,每个运算节点都需要拆成两步运算,时间复杂度位 O n 。 你可以把 n 改为 左右试试,这是消耗的时间就是秒级了。总共的求解步骤如下: 求第 位 求第 位 求第 位 求 ...
2019-05-10 22:13 0 1424 推荐指数:
一、青蛙跳台阶&斐波那契数列 1、问题 一只青蛙跳台阶,每次可以跳 1 层或 2 层。青蛙跳到 n 层一共有多少种跳法? 2、思想 先把问题规模缩小,考虑 n = 1时,n = ...
1.爬楼梯 2.买卖股票的最佳时机 3.最长回文子串 4.不同路径I 5.不同路径II 6.最小路径和 7.最小路径和(三角形) 8.强盗抢劫 9.强盗在环形街区 ...
转载于:https://blog.csdn.net/u013250416/article/details/80558542 一、基本思想 一般来说,只要问题可以划分为规模更小的子问题,并且原问题的最优解中包含了子问题的最优解,则可以考虑用动态规划解决。动态规划的实质是分治思想和解决冗余 ...
前置芝士:Here 本文是基于 OI wiki 上的文章加以修改完成,感谢社区的转载支持和其他方面的支持 树形 DP,即在树上进行的 DP。由于树固有的递归性质,树形 DP 一般都是递 ...
动态规划算法、分治法与贪心法都应用于:大问题可以分解为子问题求解的题目 一、分治法: 分治法容易理解,主要思想是:将大问题分解成子问题,求解出不同子问题的解,由各个子问题的解得到最终解。所有的子问题可能相关,也可能不相关,如果子问题相关,则求解子问题的解时,会重复计算,进行不必要的计算 ...
二叉树的前序遍历、中序遍历、后序遍历 前序遍历 遍历顺序规则为【根左右】 ABCDEFGHK 中序遍历 ...
两天的时间都在学习动态规划:小作业(01背包问题:) 数据结构老师布置的这个小作业还真是让人伤头脑,自己实在想不出来了便去网上寻找讲解,看到一篇不错的文章: http://www.cnblogs.com/sdjl/articles/1274312.html -------通过金矿模型介绍 ...
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是算法与数据结构的第15篇,也是动态规划系列的第4篇。 之前的几篇文章当中一直在聊背包问题,不知道大家有没有觉得有些腻味了。虽然经典的文章当中背包一共有九讲,但除了竞赛选手,我们能理解到单调优化就已经非常出色了。像是带有 ...