扫码关注公众号

java算法之动态规划算法
01-18
472观看
01

求出数组A中互不相邻的数的最大和。如数组A=[1,2,4,1,7,8,3]

发现从0开始推导不出结果,只能取一个一般状态,如果现在是第i个位置,f(i)表现在i位置的最大和。自然就转化为动态规划问题。推导出中间状态公

来自:动态规划算法-动态规划算法
02

80级楼梯,每次只能下一层,或者二层,问走法的种类的总和

思路:大部分人第一反应就是晕,正常算法解决不了考虑中间态,看看能不能有规律   ·设D[i]为走到第i层走法的

来自:动态规划算法-动态规划算法
03

给定一个整数数组,求最大递增子序列的长度。
如 数组a[1,3,-2,7,-1,8]的最大递增子序列是[1,3,7,8],长度为4&n

思路:一般算法解决不了,考虑中间状态   ·设LIS[i]为到第i个数时的最大子序列长度  

来自:动态规划算法-动态规划算法
04

8*8的棋盘的每个小格里放着一个价值互不相同的礼物,一个人初始位置在左上角,每次只能向下或者向右走一步,并获得相应位置的礼物,结束位置在棋盘

思路:考虑中间状态   ·设D[i][j]为棋盘位置(i,j)时,可以获得的最大价值;val[i][j]为(i

来自:动态规划算法-动态规划算法
05

下面哪个不是动态规划算法的基本要素()

正确答案是C动态规划,利用问题的最优子结构性质,以自底向上的方式递归的从子问题的最优解逐步构造出整个问题的最优解。对于重叠子问题,一个典型的问题是求斐波那契数列的第N项.如果用递归的方法做会存在大量的重叠子问题,而利用动态规划的方法就是解决了重叠子问题。建立表格不断填表,相当于备忘录,也就是解决重叠子问题的技巧,典型的问题是斐波那契数列、背包问题等,许多动态规划问题都是定义数组,进行递推过程填充数组(模拟备忘录)。马尔科夫性,是随机过程中某事件的发生只取决于它的上一事件、是“无记忆”过程。而动态规划具有“记忆性”。

来自:动态规划算法-动态规划算法
课程
专栏
五大常用算法之二:动态规划算法
动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。
博客园
动态规划算法
常用算法
动态规划:从新手到专家
动态规划算法通常基于一个递推公式及一个或多个初始状态。 当前子问题的解将由上一次子问题的解推出。使用动态规划来解题只需要多项式时间复杂度, 因此它比回溯法、暴力法等要快许多。
博客园
动态规划算法
常用算法
算法-动态规划算法-动态规划算法
2专栏
1课程
5 试题