dp小结

dp小结

  • 思想与个人理解

    动态规划是信息学的第二道门槛(第一道是递归),这一类问题独立存在,并且十分重要。我们可以从名字中看出一些端倪。动态规划。这意味着dp是一个动态的过程。我们把一个问题的变化的每个过程单独取出来,成为它的一个状态,它在不断的发生转移。我们在思考动态规划问题的时候应该问自己,这个状态可以从什么状态得来?那他可以变成什么新状态?这其中它在转移过程发生的变化是什么?
    我们把这三个要素清晰的表达出来,就等于解决了动态规划的问题。
    更实际的,我们把这三个要素变成一个东西:状态转移方程。

    既然我们要研究状态之间的转移,我们需要把一种物体变化的过程抽象出来的能力,也就是把它的变化抽象成一种种状态之间的转移,这就是设计状态。

  • 做题的一些经验总结

    一个题目,首先你要看出来它是个动态规划,这往往是有难点的,这就叫我们打破惯性思维,不断尝试新的可能,更可行的方法就是——去上厕所。
    在你发现了它可能是一个动态规划时,你可以从以下角度思考:

  • 满足题意的要求的可行情况有什么特点?是否有什么特殊要求?需不需要预处理?切忌一拿到题就开始莽,莽完发现思路都错了

  • 这个题的状态可以是什么?大部分情况是求什么设什么。你这个时候需要考虑,需要几个维度把完整的状态变化抽象出来,而且维度要尽可能少。

  • 设计完状态后,你就要思考,它的一个子状态是怎么转移过来的?举个例子,你要去学校,你可以直接去,你也可以去中山公园里转一圈再去。大概摸清楚状态之间转移的规律后,就可以尝试列状态转移方程了,记住,做题目都有一个过程,没有一个人一开始就是一定正确的,你要在这其中不断摸索,最后才能到达彼岸,所以你一定要耐心,实在不行就去上厕所

  • 设计完状态之后你就要思考循环。循环,哪一层在里,哪一层在外?循环开始和结束点是什么?if语句要写啥?然后就是一定不要,一定不要犯把i写成j,把j写成i之类的错误。还要注意大括号的位置,静态差错永远大于动态查错,养成分步调试的好习惯,写完一个部分调一个部分,写完了看看变量名,看看大括号位置。

  • 如果你以上步骤完成了之后,你程序还不对,你就要开始动态查错了。开始手造一些数据,观察、分析你的程序什么时候可以过,什么时候不能过。最重要的一点是,你不要##到自己脑子把你自己出的数据想错,我就干过这种事,真的蠢死了

  • 如果你经历了以上步骤,还是不过,那么你就需要换一下思路,做一下其他题或者把题目放着,说不定你以后走路的时候就想通了,我就经常这样。虽然被人说:“你走路竟然都在想题”

其实动态规划最重要的就是练习,只有量的积累才能带来质的飞跃。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值