LeetCode-63: Caminos diferentes II

Uno, Título Descripción

Aquí Insertar imagen Descripción

En segundo lugar, las ideas de resolución de problemas

versión avanzada de los diferentes caminos , dpa la respuesta, está claro que la programación dinámica de dos dimensiones

  • Definidos dpsignificados: Definición re pag [ yo ] [ j ] dp [i] [j] para venir coordenadas ( yo , j ) (I, j) Este es el paseo
  • condiciones de contorno definidas
    • Bajo ninguna obstrucción en la primera línea de la primera columna, la primera línea de la primera columna son sin duda un 1 porque sólo hay uno se mueve
    • Sin embargo, si hay un obstáculo en la primera línea de la primera columna, sólo puede ir tan lejos como la parte delantera del obstáculo, incluyendo obstáculos detrás del punto donde su dpvalor es 0
      Aquí Insertar imagen Descripción
  • El establecimiento de la ecuación de transición de estado
    • Supongamos que el robot de corriente situado ( yo , j ) (I, j) , defaultdp[i][j] = 0;
      • Si el punto es que hay obstáculos, por lo que dp[i][j]sólo puede ser 0
      • Si el punto es que no hay obstáculos
        • Los puntos anteriores
          • Hay obstáculos, a continuación, la ruta anterior está bloqueado, sólo puede venir de la izquierda, luego dp[i][j]la misma, más el 0
          • No hay obstáculos, puede venir de arriba, entoncesdp[i][j] += dp[i - 1][j]
          • Acabado:dp[i][j] += (obstacleGrid[i][j - 1] ? 0 : dp[i][j - 1]);
        • El punto de la izquierda
          • Del mismo modo:dp[i][j] += (obstacleGrid[i - 1][j] ? 0 : dp[i - 1][j]);

En tercer lugar, el Código de resolución de problemas

class Solution {
public:
    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
        auto m = obstacleGrid.size();
        auto n = obstacleGrid[0].size();
        unsigned int dp[m][n];

        bool flag = 0;
        for(int i = 0; i < m; i++){
            if(!obstacleGrid[i][0] && !flag)
                dp[i][0] = 1;
            else{
                dp[i][0] = 0;
                flag = 1;
            }   
        }

        flag = 0;
        for(int i = 0; i < n; i++){
            if(!obstacleGrid[0][i] && !flag)
                dp[0][i] = 1;
            else{
                dp[0][i] = 0;
                flag = 1;
            }
        }
        
        for(int i = 1; i < m; i++){
            for(int j = 1; j < n; j++){
                dp[i][j] = 0;
                if(obstacleGrid[i][j] == 0){
                    if(obstacleGrid[i][j - 1] == 0)
                    dp[i][j] += (obstacleGrid[i][j - 1] ? 0 : dp[i][j - 1]);
                    if(obstacleGrid[i - 1][j] == 0)
                        dp[i][j] += (obstacleGrid[i - 1][j] ? 0 : dp[i - 1][j]);
                }             
            }
        }
        return dp[m - 1][n - 1];
    }
};

En cuarto lugar, los resultados operativos

Hay un grupo de los resultados operativos muy arrogantes:
Aquí Insertar imagen Descripción
[[0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0, 0,1,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0,0,1,0,0, 0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1], [0,0,0,0,0,1, 0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0, 0,0], [1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,1,0, 0,0,0,0,0,0,0,1,0,0,1], [0,0,1,0,0,1,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0], [0,0,0,1, 0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0, 0,1,1,0], [1,0,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0, 0,0,0,0,1,0,0,0,0,0,0,0,0], [0,0,1,0,0,0,0,0,0,0,0, 0,0,0,0,1,0,0,1,0,1,0,0,0,1,0,1,0,0,0,0,0,0], [0,0, 0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 1,1,0,0,1,0], [0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0, 0,0,0,0,1,1,0,0,0,1,0,0,0,0,0], [0,1,1,0,0,0,0,0,0, 0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0], [ 1,0,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,1,0,1,0,0,0, 1,0,1,0,0,0,0,1], [0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0, 0,1,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0], [0,1,0,1,0,0,0,0,1,0,0, 1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,0,0,0,0,0], [0,1, 0,0,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1, 0,0,1,1,0,1], [1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0, 0,0,0,0,0,1,0,0,1,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0], [ 0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,1,1, 0,1,0,0,0,0,1,1], [0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0, 0,0,0,0,0,0,0,0,0,1,0,1,1,0,1,0,1], [1,1,1,0,1,0,0, 0,0,1,0,0,0,0,0,0,1,0,1,0,1,1,0,0,0,0,0,0,0,0,0,0, 0], [0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0, 0,0,0,0,0,0,0,0,1,1], [0,0,0,1,0,0,0,0,0,0,0,0,0,0, 0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0]]0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0, 0,0,1,1,0,0,1,0,0,0,0,0,0], [0,0,1,0,0,0,0,0,0,0,1, 0,0,1,0,0,1,0,0,0,0,0,0,1,1,0,1,0,0,0,0,1,1], [0,1, 0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0, 1,1,0,1,0,1], [1,1,1,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0, 1,0,1,1,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,1,1,0,0,0, 0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1], [ 0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0, 1,0,0,0,1,0,0,0]]0,0,0,0], [0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0, 0,0,1,1,0,0,1,0,0,0,0,0,0], [0,0,1,0,0,0,0,0,0,0,1, 0,0,1,0,0,1,0,0,0,0,0,0,1,1,0,1,0,0,0,0,1,1], [0,1, 0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0, 1,1,0,1,0,1], [1,1,1,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0, 1,0,1,1,0,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,1,1,0,0,0, 0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1], [ 0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0, 1,0,0,0,1,0,0,0]]

Un resultado directo de mi desbordamiento de datos, la historia que queremos contar dpla matriz se establece en unsigned intel tipo, a evitar desbordamiento
Aquí Insertar imagen Descripción

Publicado 30 artículos originales · ganado elogios 3 · Vistas 816

Supongo que te gusta

Origin blog.csdn.net/weixin_44587168/article/details/105327121
Recomendado
Clasificación