J*********n 发帖数: 370 | 1 http://blog.csdn.net/linulysses/article/details/5594141
这里有对largest rectangle under histogram, maximal subsequence和largest
submatrix几类问题的总结,大家可以看看。但是其中largest rectangle under
histogram的O(n)算法我不太理解其正确性。
比如我有这样一个histogram {2,10, 15, 7, 9, 8, 3},按照其中的代码
i operation stack max u v
[] 0 0 0
1 push 2 [2] 0 0 0
2 push 10 [10,2] 0 0 0
3 push 15 [15, 10,2] 0 0 0
4 pop 15 [10,2] 15 3 3
pop 10 [2] 20 2 3
* push 7 [7,2] 20 2 3
5 push 9 [9, 7,2] 20 2 3
6 pop 9 [7,2] 20 2 3
* push 8 [8, 7,2] 20 2 3
7 pop 8 [7,2] 20 2 3
pop 7 [2] 21 4 6
* push 3 [3,2] 21 4 6
8 pop 3 [2] 21 4 6
pop 2 [] 21 4 6
* 代码里面漏了这一步
按照上面的代码计算出来最大方形面积是21,但是实际的最大方形面积应该是35才对(对
应的u=2, v=6)
这个O(n)的算法我之前也看过,当时没看懂,这次这个看懂了,但是好像这个是错的
有谁知道正确的算法应该怎么修改? | B*******1 发帖数: 2454 | | j********x 发帖数: 2330 | 3 千万别看中文的技术资料。。。
0
0
【在 J*********n 的大作中提到】 : http://blog.csdn.net/linulysses/article/details/5594141 : 这里有对largest rectangle under histogram, maximal subsequence和largest : submatrix几类问题的总结,大家可以看看。但是其中largest rectangle under : histogram的O(n)算法我不太理解其正确性。 : 比如我有这样一个histogram {2,10, 15, 7, 9, 8, 3},按照其中的代码 : i operation stack max u v : [] 0 0 0 : 1 push 2 [2] 0 0 0 : 2 push 10 [10,2] 0 0 0 : 3 push 15 [15, 10,2] 0 0 0
|
|