MITBBS上看了一道有趣的G家面试题,题目如下:
有一个2维矩阵,假设你是Harry Potter,在矩阵的左上角,你现在要走到右下角。矩阵中每个点都有一个权值,有正数也有负数,遇到正数表示你的生命力能增加那么多,遇到负数表示生命力减少那么多,在任何时刻如果你的生命力小于0,那么你就挂了。在一开始你有一定的初始生命力,现在问这个初始的生命力最少是多少,才能保证你能够找到一条路。走到右下角。每一步只能向右或者向下。
其实这个题目看起来很像LeetCode里的Minimum Path Sum,也是从左上角走到右下角,只不过这里不是求总权值最小的路径而已。那么这题是不是用同样的方法就可以解决了呢?现在分析下题目的相似处和不同处。
相似处:都是求最优解问题,而且都具有递归性质。一般这种题目要么用贪心,要么用DP。稍微分析下,这里用贪心肯定不行的,如果一开始碰到两个权值都为正的方向,直接贪心地选择走权值更大的那个,那么之后如果遇到一个无法预见的