本文主要是了解和记录语录,对动态规划有一个初步的了解。动态规划(DynamicProgramming,DP)是运筹学的一个分支,是求解决策过程最优化的过程。解决问题的前提是做好逻辑规划,将思路提炼出来,然后将思路转化为代码实现,再对代码进行优化,利用已有的语法更快速高效地解决问题。引用的文字首先解释了求解动态规划问题的思路,然后举了一个例子来说明,并按照前三个例子。动态规划无非是利用历史记录来避免我们的双重计算。而这些历史记录,我们需要一些变量来保存,一般使用一维数组或者二维数组来保存。第一步:定义数组元素的含义;第二步:找出数组元素之间的关系;第三步:求初始值;理解与解释:第一步是将问题拆解成一系列的子问题,并明确子问题的含义,逐一解决子问题,然后得到解。第二步,了解子问题之间的关系,并将这种关系转化为公式;第三步,将子问题公式推导到最后不能推导的地方,必须有一个可以直接得到的值,这就是初值。在推导之前,必须给定初值,整个推导过程才能最终有解。引用文中的前三个例子已经练习过了,下面是我自己的例子(虽然我也参考了官方的题解):/***53.最大子数组和*给你一个整型数组nums,请找到具有最大和的连续子数组(子数组至少包含一个元素),返回最大和。*子数组是数组的连续部分。*示例1:*输入:nums=[-2,1,-3,4,-1,2,1,-5,4]*输出:6*解释:连续子数组[4,-1,2,1]最大和为6。*来源:LeetCode*链接:
