找矩阵中的最大正方形
程序员文章站
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
上一篇: ros学习之topic实例4
下一篇: 稀疏矩阵三元组表示