题目:http://www.nocow.cn/index.php/Translate:USACO/range
寻找正方形内部所有的正方形块,包括任意小块。
如果遍历每个节点,把每个节点当做正方形块的起始点,然后寻找正方形,会超时的。
但是这道题可以通过动态规划的思想来考虑。map[i][j]示正方形右下角i,j节点的最大正方形的边长,则可以得出以下公式
map[i][j]=min(map[i-1][j],map[i][j-1],map[i-1][j-1])+ 1;
因此就可以统计出所有的正方形块了。代码如下:
运行效果如下: