题目连接
- 该题是luogu试炼场的2-17:T3
题目大意
- n*m的棋盘,每个格子有一个0/1的数值;
- 求一个最大的正方形子矩阵,要求矩阵内都是1;
- 输出这个最大子矩阵的边长;
题目分析
- 经典的子矩阵问题,问什么设什么:f[i][j]表示以(i,j)为右下角的子矩阵,能构成正方形的边长的最大值;
- 如果a[i][j]的值是0,f[i][j]不存在子矩阵;
- 如果a[i][j]的值是1,f[i][j]的值肯定与:左边,上边,左上,这三个格子的值有关;
- 如上图,灰色和蓝色格子都是已知的,则橙色格子的值,只受到蓝色格子的影响;
- 因为橙色格子所在的子矩阵,需要同时包涵三个蓝色的格子,所以三个蓝色格子中的最小值+1,就是橙色格子的f值;