Easy approach cpp


#1
int Solution::solve(vector<vector<int> > &A) {
    int n=A.size();
    int m=A[0].size();
   int dp[n][m];
    memset(dp, -1, sizeof dp);
    for(int i=0; i<n ; i++){
        for(int j=0; j<m ; j++){
            if(A[i][j]==0) dp[i][j]=A[i][j];
            if(i==n-1) dp[i][j]=A[i][j];
            if(j==m-1) dp[i][j]=A[i][j];
        }
    }
    for(int i=n-2; i>=0 ; i--){
        for(int j=m-2; j>=0; j--){
            if(dp[i][j]==-1)
            dp[i][j]=min(dp[i+1][j], min(dp[i][j+1], dp[i+1][j+1]))+1;
        }
    }
    int maxi=0;
    for(int i=0; i<n ; i++){
        for(int j=0; j<m ; j++){
           maxi= max(maxi,dp[i][j]);
        }
    }return maxi*maxi;
}