吉比特笔试之走格子游戏

1.题目描述
吉比特笔试之走格子游戏_第1张图片

2.解题思路:
求从左上角移动到右上角需要多少个行动力,可以解释为在走完最后一个房间的时候血量至少要剩下1,因为最后的状态可以当成是初始状态,由后往前依次决定在每一个位置至少要有多少行动力, 这样一个位置的状态是由其下面一个和和左边一个的较小状态决定.状态方程为:
dp[i][j] = min(dp[i+1][j], dp[i][j+1]) - dungeon[i, j];

var calculateMinimumHP = function(dungeon) {
    var m = dungeon.length;
    var n = dungeon[0].length;
    var dp = [];

    for(var i=0;i<=m;i++){
        dp[i] = [];
        for(var j=0;j<=n;j++) dp[i][j] = Infinity;
    }
    dp[m-1][n] = 1;
    for(var i=m-1;i>=0;i--){
        for(var j=n-1;j>=0;j--){
            var temp = Math.min(dp[i][j+1],dp[i+1][j]) - dungeon[i][j];
            dp[i][j] = Math.max(temp,1);
        }
    }
    return dp[0][0]; 
};

你可能感兴趣的:(校招笔试题)