颓了五天之后我终于开始工作了,再次决定先不要想那么多,没事干才迷茫!
今天终于看懂了最长公共子序列,还是自己把表完整地写一遍比较好理解,然后在杭电上随意地点开了一个recommend,就来到了一个题(1087),看完最长递增子序列,我就看完了五类基本的dp问题——最大连续子序列之和,数塔问题,01背包,最长公共子序列,最长递增子序列。
呃,当然可能忘得也差不多了,但是还是决定总结一下。
前几篇也写了,dp就是把大问题分成小问题,然后建一个表,把东西先存起来,不管有没有用先。
最长连续子序列之和:
我觉得这是dp中最好想的了,把每一个都当做是最后一个数,那加上这个数的sum还是这个数,dp[i]=max(sum+num[i],num[i]);额…我又写错了!是dp[i]=max(dp[i-1]+num[i],num[i]);不想讲话了,自己看着理解吧。
数塔问题:
数塔最关键的就是从后往前走嘛,先把最后一层的dp写好,然后往上走。
01背包
01背包我觉得关键就是找好背包容量是什么
最长递增子序列
最长公共子序列
emmmm,不想写了,还是再多刷几道题,然后脑子里有点东西再写吧。
dp小总结
