一、题意 输入一个n*m的矩阵,'.'表示空地,'#'表示障碍物,要求你对于每一个空地,求出以它为右下角的空矩形的最大周长。然后统计每个周长出现了多少次。 二、解析 看到题意,应该就能回想到一些之前做过的题目:找最大空矩形面积。而这道题要找的是最大周长。其实是异曲同工的,也就是先将原图转化为n个直方图,然后对每个直方图通过单调栈就最大面积的矩形。这样的方法总用时O(n*m),不会超时。 而在本题中就是要用单调栈求最大周长,并且是要对每一个空地都求一个最大周长的空矩形。在直方图中从左向右遍历时,设当前列为i,对应的矩形右下角即为(i, 0),我们要找的就是矩形的左上角(c, h)使得周长 2*(...