[MIT6.006] 22. Daynamic Programming IV: Guitar Fingering, Tetris, Super Mario Bro. 动态规划IV:吉他指弹,俄罗斯方块,超级玛丽奥
阅读原文时间:2023年07月09日阅读:1

之前我们讲到动态规划五步中有个Guessing猜,一般情况下猜有两种情况:

  • 在猜和递归上:猜的是用于解决更大问题的子问题;
  • 在子问题定义上:如果要猜更多,就要增加更多子问题。

下面我们来看如果像背包问题那样子问题比较多,该怎么去解决?

一、Piano / Guitar Fingering

给定n个按键,找到每个键应该用哪只手指去按。假设有F个手指,刚开始手指f按在p键上,如果转移到用手指g按键q,这个转移难度为定义为d(p, f, q, g)。

动态规划的解决思路如下(红叉内的内容是因为只考虑了一个子问题而报错):

上面是“单次按键只能按一个键”,但实际上,单次按键会要同时按多个键或弦,这该怎么办呢?方法如下图所示:

二、俄罗斯方块

如果你玩俄罗斯方块有下列前提,你该如果用动态规划去设计算法?结果如下图:

三、超级玛丽奥

在超级玛丽奥上,动态规划的子问题就更多了,需要考虑最小化时间,最大化分数,最大化玛丽奥速度等,解决思路讲师没给出来,但方法都八九不离十,这里我就没进行深入了解了,后续有兴趣可以深入了解看看。

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章