怎样高效解决如下“寻找最大子块”的算法问题(已解决,代码已出,见答案区本人自答)( 三 )

测试数据:data.txt14 51 1 1 0 00 1 1 1 01 0 1 1 11 0 0 1 11 1 1 0 01 1 1 1 01 0 0 0 01 1 1 0 01 1 0 1 00 1 1 0 11 1 0 0 01 0 0 1 10 1 1 0 01 0 0 0 0======================================================================这个方法很巧妙,并且可以推广到3维上去。再次感谢我的同学:欧阳大锤!
■网友
算好前缀和。枚举一个顶点二分不对看错题了。。对于二维的问题。每个0意味着其所在的行或列中至少一个被删去。所以一个最大子块的方案对应着一个二分图的点覆盖。。不过答案要求的是最后的长乘宽最大。不知道可不可以枚举一边跑上下界流来搞。。我再想想另外这个做法是不能扩展到三维的。。有点难办
■网友
这个有个简化版的问题,给一个 heights 数组,求最大矩形面积主要利用栈来构造递增高度序列,再来求解最大值。而你说这个问题是上述问题复杂版,可以计算从0行 开始的heights 数组并求解全局最大值
■网友
对于 N× N的 矩阵。 不考虑输入复杂度。2维状况下,可以做到nLog(n); 的复杂度。三维状态暂时没想到好的方法。只能暴力搜。所以 对于 N×N×N的矩阵 只能做到N3log(N).这个复杂度和输入复杂度接近。。绝大多数情况下可以解决问题了。


推荐阅读