Juegos de mazmorras (dp)

Título: https://leetcode-cn.com/problems/dungeon-game/
Título: Dada una matriz, vaya de (0, 0) a (n-1, m-1), cada vez que solo puede bajar Ir a la derecha requiere que el volumen de sangre permanezca positivo durante el proceso. Encuentre el volumen sanguíneo inicial mínimo.
Solución del problema: este es el problema de maximización del valor mínimo. El reverso no es bueno, considere el reverso. Hacer re pags [ yo ] [ j ] dp [i] [j] representa el volumen sanguíneo mínimo requerido para alcanzar este punto. Si los puntos vecinos son negativos, significa que ir hacia atrás necesita un consumo adicional, tomar el consumo mínimo y agregar su propio valor de puntos; si hay un valor positivo en los puntos vecinos, significa que no hay consumo adicional yendo hacia atrás, solo considere su propio El valor del punto es suficiente.

class Solution {
public:
    int calculateMinimumHP(vector<vector<int>>& dungeon) {
        int n = dungeon.size();
        if(!n) return 0;
        int m = dungeon[0].size();
        if(!m) return 0;
        vector<vector<int> >dp = vector<vector<int> >(n+1,vector<int>(m+1));
        for(int i = n-1;i >= 0;i--) {
            for(int j = m-1;j >= 0;j--) {
                if(i == n-1 && j == m-1) {
                    dp[i][j] = dungeon[i][j];
                    continue;
                }
                dp[i][j] = INT_MIN;
                if(i < n-1) dp[i][j] = max(dp[i][j],dp[i+1][j]);
                if(j < m-1) dp[i][j] = max(dp[i][j],dp[i][j+1]);
                if(dp[i][j] > 0) dp[i][j] = dungeon[i][j];
                else dp[i][j] += dungeon[i][j];
            }
        }
        // for(int i = 0 ;i < n;i++) {
        //     for(int j = 0;j < m;j++) {
        //         printf("%d ",dp[i][j]);
        //     }
        //     printf("\n");
        // }
        if(dp[0][0] > 0) return 1;
        return -dp[0][0]+1;
    }
};
152 artículos originales publicados · elogiados 2 · visitas 6450

Supongo que te gusta

Origin blog.csdn.net/weixin_43918473/article/details/104710219
Recomendado
Clasificación