LeetCode 221. Maximal Square(DP)

2020-02-25 16:24:45 浏览数 (1)

题目

题解:动态规划

代码语言:javascript复制
class Solution {
public:
    int dp[1005][1005];
    int dp2[1005][1005];
    int maximalSquare(vector<vector<char>>& matrix) {
        
        int n=matrix.size();
        int m;
        if(n>0)
            m=matrix[0].size();
        if(m<=0)
            return 0;
        
        int ans=0;
        
        for(int i=0;i<n;i  )
        {
            for(int l=0;l<m;l  )
            {
                for(int j=0;j l<m;j  )
                {
                    int k=j l;
                    if(k==j)
                    {
                        if(matrix[i][k]=='1')
                        {
                            dp[j][k]=1;
                            ans=max(ans,dp[j][k]);
                        }
                    }
                    else
                    {
                        if(dp[j][j]&&dp[j 1][k])
                        {
                            dp[j][k]=k-j 1;
                            if(dp2[j][k])
                            {
                                dp[j][k]=dp2[j][k] k-j 1;
                            }
                            
                            if(dp[j][k]/(k-j 1)==k-j 1)
                                ans=max(ans,dp[j][k]);
                        }
                        
                    }
                    
                }
            }
            
            for(int j=0;j<m;j  )
            {
                for(int k=j;k<m;k  )
                {
                    dp2[j][k]=dp[j][k];
                    dp[j][k]=0;
                }
            }
        }
        return ans;
    }
};

0 人点赞