码迷,mamicode.com
首页 > 其他好文 > 详细

[leetcode 221]Maximal Square

时间:2015-08-03 17:00:01      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:c++   leetcode   dp   动规   221   

Maximal Square

Total Accepted: 8699 Total Submissions: 44034

Given a 2D binary matrix filled with 0‘s and 1‘s, find the largest square containing all 1‘s and return its area.

For example, given the following matrix:

1 0 1 0 0
1 0 1 1 1
1 1 1 1 1
1 0 0 1 0

Return 4.

提供一个由字符0、1的矩阵,判断由1组成的正方形的最大面积

动态规划

if(matrix[i][j]==‘1‘)
                {
                    count[i][j]=min(count[i-1][j-1],min(count[i-1][j],count[i][j-1]))+1;
                    if(count[i][j]>max)
                        max=count[i][j];
                }
                else
                    count[i][j]=0;

count[i][j]表示到矩阵第i+1行第j+1列正方形的最大变长

AC代码

class Solution
{
public:

    int min(int x,int y)
    {
        return x<y?x:y;
    }
    int maximalSquare(vector<vector<char> >& matrix)
    {
        int rows=matrix.size();
        if(rows==0)
            return 0;
        int max=0;
        int colums=matrix[0].size();
        int count[rows][colums];
        for(int i=0; i<rows; ++i)
        {

            if(matrix[i][0]=='1')
            {
                count[i][0]=1;
                max=1;
            }
            else
                count[i][0]=0;
        }
        for(int i=0; i<colums; ++i)
        {
            if(matrix[0][i]=='1')
            {
                count[0][i]=1;
                max=1;
            }
            else
                count[0][i]=0;
        }
        for(int i=1; i<rows; ++i)
        {
            for(int j=1; j<colums; ++j)
            {
                if(matrix[i][j]=='1')
                {
                    count[i][j]=min(count[i-1][j-1],min(count[i-1][j],count[i][j-1]))+1;
                    if(count[i][j]>max)
                        max=count[i][j];
                }
                else
                    count[i][j]=0;
            }
        }
        return max*max;
    }
};

注意处理形如下面的矩阵

1 1 1 1 1

1 0 0 0 0

1 0 0 0 0

1 0 0 0 0

版权声明:本文为博主原创文章,未经博主允许不得转载。

[leetcode 221]Maximal Square

标签:c++   leetcode   dp   动规   221   

原文地址:http://blog.csdn.net/er_plough/article/details/47257195

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!