动态规划法基本思想

动态规划法基本思想:  将原问题分解为相似的子问题,在求解的过程中通过子问题的解求出原问题的解。  比如说迈台阶问题

题目描述 有一个有n级台阶的楼梯,上楼时可以一次迈一级,或者一次迈二级,或者一次迈三级,或者一次迈四级;问共有多少种上楼梯迈台阶的方法。

(注意结果可能有点大。)

输入 只有一行且只有一个正整数:n (1<=n<=60)

输出 只有一行且只有一个正整数:上楼梯的方法数

样例输入 5 样例输出 15

求斐波那契数列问题

题目描述   菲波那契数列定义为:   f(1) = 1;   f(2) = 1;  当n>2时, f(n) = f(n-1) + f(n-2)。输入n,求菲波那契数列的第n项。

要求:用递归函数求菲波那契数列的第n项。

输入 一个正整数n(0≤n≤20)。 输出 菲波那契数列的第n项。 样例输入 6 样例输出 8

 将问题不断的简化然后由初始情况得到问题的答案,期间用一个数组来保存所有的答案,避免大量的计算。

时间: 2024-10-07 02:06:07

动态规划法基本思想的相关文章

南邮算法分析与设计实验2 动态规划法

动态规划法 实验目的: 加深对动态规划法的算法原理及实现过程的理解,学习用动态规划法解决实际应用中的最长公共子序列问题. 实验内容: 用动态规划法实现求两序列的最长公共子序列,其比较结果可用于基因比较.文章比较等多个领域. 实验要求: 掌握动态规划法的思想,及动态规划法在实际中的应用:分析最长公共子序列的问题特征,选择算法策略并设计具体算法,编程实现两输入序列的比较,并输出它们的最长公共子序列. 实验原理及内容(包括操作过程.结果分析等) 1.最长公共子序列(LCS)问题是:给定两个字符序列X=

HDU 4548 美素数 素数题解

本题就是能够直接打表的,推断能否够打表也须要技巧的: 1 推断最大的数值为1000000.百万下面的数打表都是能够的 2 能够线性预处理好.使用素数筛子法是能够接近线性预处理的. 故此能够打表了. 须要熟悉的基本知识点: 1 素数筛子法 - 一两分钟之内写出代码 2 一般素数推断法,由于位数相加之后的数值很小,故此一般素数推断就能够了,假设写个primality test 算法会大材小用了. 3 然后是带点动态规划法的思想把前面的美素数叠加起来,方便查找. 算是基础题目了,也是有人说的水题,我还

五大算法思想—贪心算法

贪心法理解 贪心法在解决问题的策略上目光短浅,只根据当前已有的信息就做出选择,而且一旦做出了选择,不管将来有什么结果,这个选择都不会改变.换言之,贪心法并不是从整体最优考虑,它所做出的选择只是在某种意义上的局部最优. 一句话:不求最优,只求可行解. 判断贪心法 对于一个具体的问题,怎么知道是否可用贪心算法解此问题,以及能否得到问题的最优解? 我们可以根据贪心法的2个重要的性质去证明:贪心选择性质和最优子结构性质. 1.贪心选择性质 什么叫贪心选择?从字义上就是贪心也就是目光短线,贪图眼前利益,在

动态规划法—0-1背包问题(一)

0-1背包问题 问题描述 给定n个物品和一背包.物品i的重量是wi,其价值为vi,背包的容量为W.应如何选择装入背包的物品,使得装入背包中物品的总价值最大? 约束条件 放入背包的物品的重量<=背包容量W 物品只能进入背包或不进入背包,不可拆分,区别于部分背包问题. 求解目标 我们可以这样来刻画问题的解. 假如有n个物品,用Xi表示第i个物品的状态.Xi 的值为0或1.0表示物品未进入背包,1表示物品进入背包. 那么问题的解就是一个集合(X1,X2,X3,-,Xi,-,Xn) . 所以,我们就是要

基本算法思想

分治算法 一.基本概念 在计算机科学中,分治法是一种很重要的算法.字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并.这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)…… 任何一个可以用计算机求解的问题所需的计算时间都与其规模有关.问题的规模越小,越容易直接求解,解题所需的计算时间也越少.例如,对于n个元素的排序问题,当n=1时

算法之动态规划法

动态规划算法其实就是一种优化的算法,其基本思想就是将待求解的问题分解成若干子问题,先求解子问题(这些解不是独立的),然互从这些子问题中得到原问题的解.其最终得到的结果往往是最优解.和贪心法不同的是,动态规划法不可以将一个整体进行分割. 举个简单的例子:给出7个数,1,2.....7,从中选出不超过3个使得这3个数的和不超过20.求解时我们应该一步一步进行: 1.先给一个数,然后对7个数进行遍历,找到最大的,为7 2.在找两个数,求其最大和,在和步骤一的最大值进行比较,看看谁大就取哪一个为最大值,

五大常用算法 之 动态规划法

一.基本概念 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移.一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划. 动态规划是运筹学中用于求解决策过程中的最优化数学方法.当然,我们在这里关注的是作为一种算法设计技术,作为一种使用多阶段决策过程最优的通用方法.它是应用数学中用于解决某类最优化问题的重要工具. 如果问题是由交叠的子问题所构成,我们就可以用动态规划技术来解决它,一般来说,这样的子问题出现在对给定问题求解的递推关系中,这个递推关

算法笔记_006:全源最短路径问题【动态规划法】

目录 1 问题描述 2 解决方案 2.1  动态规划法原理简介 2.2  具体编码 2.3  运行结果 1 问题描述 (1)实验题目 给定一个加权连通图(无向的或有向的),要求找出从每个定点到其他所有定点之间的最短路径以及最短路径的长度. (2)实验目的 1)深刻掌握动态规划法的设计思想并能熟练运用,理解它与分治法的区别: 2)掌握最优性原理和最优子结构性质: 3)理解这样一个观点:用动态规划方法求解问题的关键在于确定动态规划函数的递推式. (3)实验要求 1)实现Floyd算法: 2)算法的输

算法学习笔记——动态规划法

一.基本概念 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移.一个决策序列就是在变化的状态中产生出来的,所以,这样的多阶段最优化决策解决这个问题的过程就称为动态规划. 二.基本思想与策略 基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段).按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了实用的信息.在求解任一子问题时.列出各种可能的局部解,通过决策保留那些有可能达到最优的局部解,丢弃其它局部解.依次解决各子问题,最后一个子问题就是初始问题的解. 因为动态规