Leetcode 221. El cuadrado más grande (DÍA 45) ---- Período de aprendizaje de programación dinámica (¡un perro perezoso se despierta! Palomas y palomas lo han estado durante varios días)

Titulo original

Inserte la descripción de la imagen aquí



Implementación de código (primer pincel de resolución automática)

int maximalSquare(char** matrix, int matrixSize, int* matrixColSize){
    
    
    int dp[301][301],i,j,max = 0;
    memset(dp,0,sizeof(dp));
    for(i=0;i<matrixSize;i++)
    {
    
    
        for(j=0;j<matrixColSize[0];j++)
        {
    
    
            if(matrix[i][j] == '1')
                dp[i][j] = 1;
        }
    }
    
    for(i=0;i<matrixSize;i++)
    {
    
    
        for(j=0;j<matrixColSize[i];j++)
        {
    
    
            if(i && j)
            {
    
    
                if(dp[i][j] && dp[i-1][j-1] && dp[i-1][j] && dp[i][j-1])
                    dp[i][j] = fmin(dp[i-1][j-1],fmin(dp[i-1][j],dp[i][j-1])) + 1;
            }
            if(dp[i][j] > max)
                max = dp[i][j];
        }
    }
    return pow(max,2);
}

Supongo que te gusta

Origin blog.csdn.net/qq_37500516/article/details/113806331
Recomendado
Clasificación