数据结构与算法无疑是游戏开发的基础之一,重要性也不可置疑,很多大厂在面试中对算法方面也格外重视,本篇文章我们就从大厂算法面试题中拆分出常考的动态规划技术点,为大家进行详细分析。
动态规划(Dynamic Programming,DP)是运筹学的一个分支,是求解决策过程最优化的过程。
我们接下来会从两个方面进行研究,一方面通过对比贪心和分治算法看下思想上的差异,另一方面在解法上根据递归和迭代来看看如何解决动态规划问题。
01
贪心和分治跟动态规划有什么区别
首先是贪心和分治跟动态规划有什么区别。
顾名思义,贪心就是贪婪,即每次决策时选择最大的或者最小的,这个可以直接进行字面理解。
那分治又是什么?我们举个非常简单的例子,假如我是个吃货,我现在要吃一个大蛋糕,但是我嘴不够大,一口塞不下,这可咋办呢,我瞄了一眼桌上的水果刀,嘿嘿嘿,我横一刀竖一刀,再斜着给他来两刀,一块蛋糕直接劈成八份,平均八份那种哈,现在呢我就可以一口吃掉其中的八分之一,吃八次,这个蛋糕被我消灭了,咯,好饱!所以呢,这就叫分治,我一口气干不掉你,那我就把你拆了再搞你。
02
动态规划
那什么叫动态规划呢,其实动态规划在分解上跟分治很像,他也需要将一个大问题,拆成一堆一毛一样的小问题,但是呢,分治法分解成的