关于dp动态规划(自己复习用,可供ACM参考)

前言
争取用最通俗易懂的语言说明什么是dp,本文章适用于无论是初学者还是大四面试时候发现自己忘了,或者手生了(前几天面试的时候突然卡壳)

一、什么是动态规划(大佬可以跳过,小白科普)
       动态规划就是我这问题,我没法一下子告诉你答案,因为我需要考虑到我的上一步的情况。
       最简单的例子,放寒假了,你这个寒假的舒适程度取决于什么,你在期末考试之前你知道吗?你不知道,因为你不同的成绩会带来不同的结果。
       你如果全优,还能拿奖学金,这个寒假你就是皇帝了,想干啥干啥;你如果还马马虎虎都过了,那你就是太子,糊弄糊弄也能过个好年;但是你要是每门都挂了,成绩还比你先到家,对不起,从太监慢慢混起吧。
       这样你看,咦,也还行啊,就三种情况,我写三个if,else或者用switch不就能解决了吗。骚年,你不会碰到这种题目的,签到题都比这个难。那我加个条件,你成绩取决于什么,取决于老师看你顺不顺眼,平时成绩给你多少,还有你最后一周佛jio报的怎么样,这个条件就和上面的成绩有影响了。当然你也还可以if,else大法嘛,结果小概率(0.1%)这次比赛,到结束5个小时,你可以把一些模拟的题A出来,但是大概率是不行的。
       到这里,你差不多理解了我们要干么了对的,我们就是要根据之前的状态推出之后的状态,但是因为这样的情况很多,并且每一个环节都是相关联的,所以我们需要记忆这些状态,来得到我们想要的结果,可能在过程中,也可能在最后。,这个过程,其实就是写状态转移方程的过程,如果你不懂状态转移方程是什么,没关系,接下来我会详细地说一下。

二、关于状态转移方程
       其实状态转移方程不该在这儿讲,但是既然提到了,我们就先说一下,以下简称状转。国内很多学校的队伍,训练的时候都是讲的状转,但是我看过国外的一些队伍,他们不会提状态转移方程这个概念。他们的教学模式是先说dfs,bfs(深搜,广搜,这个还不会的自己去看着学,基础!),然后讲到了记忆化搜索,自然而然地引出来dp的概念,这样更加让人清楚自己的目的,也能强化一个寻找的过程。
       国内的模式,我觉得更适合大佬,因为大佬一看,哦,dp,甚至肌肉记忆,就开始写状转,写完了其实代码也就出来了,dp的代码通常都很短,偶尔也有长的跟树什么的可能会有200多行,一般省赛的难度也就是50多行(代码简洁的话)就能敲出来。但是对于新手,拿到之后,也想着我要写状转,但是就会卡,因为我们通常会忽略一个思想,就是记忆化搜索的思想,导致有时候流程我们都画出来了, 我们的dp数组的下标很容易卡,总是会陷入到我脑子里想着很好,上一步,但是我不知道这个上一步的坐标和方程。
       这里没有崇洋媚外,说国外的好,国内的不好(强烈的求生欲)。我想说的是,不要陷入到每次拿到dp,就下意识,我要写状转的。一定要练熟记忆化搜索。

还没写完,先准备面试了。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值