摘要:
既然是为了宣传...那么还是把讲解部分放在前面吧...借用适牛的一句话:没有人敢说自己精通动态规划。所以我也就着这道题稍微说说我对动态规划的理解吧...动态规划的基本思想就是空间换时间,就是申请更多的内存空间存储中间环节以减少重复计算。回到这道题,我们先看较为简单的一维问题:求数列的最大子数列。是不是很容易想到枚举前后端点?O(n^3)的时间复杂度可吃不消啊...于是我们就要想,如何才能存储下中间状态?我们可以观察到,每次枚举出两个点时,循环求区间和是一个重复计算的过程,可以在上一步的基础上加上这一步多出来的点。于是就要多申请一个变量空间记录这些累加和,但是时间复杂度因此下降到了O(n^2)。 阅读全文