欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

找矩阵中的最大正方形

程序员文章站 2022-03-05 16:20:24
...

代码:

int n,m;
int M[maxn][maxn];
int tmp[maxn][maxn];
int maxSquare()
{
    int row = n;  //行大小
    int line = m;  //列大小
    for(int i=0; i<row; i++)
    {
        tmp[i][0] = M[i][0];
    }
    for(int i=0; i<line; i++)
    {
        tmp[0][i] = M[0][i];
    }

    for(int i=1; i<row; i++)
    {
        for(int j=1; j<line; j++)
        {
            if(M[i][j] == 1)
            {
                tmp[i][j] =min(min(tmp[i-1][j],tmp[i][j-1]),tmp[i-1][j-1]) + 1;
            }
            if(M[i][j] == 0)
            {
                tmp[i][j] = 0;
            }

        }
    }
    int maxx=0;  //记录tmp中最大元素的值(tmp中元素值表示正方形的边长)
    for(int i=0; i<row; i++)
    {
        for(int j=0; j<line; j++)
        {
            if(tmp[i][j] > maxx)
            {
                maxx = tmp[i][j];
            }
        }
    }
    return maxx*maxx;
}

参考:https://blog.csdn.net/qq_43096935/article/details/82495284

相关标签: 矩阵