我有一个直方图,我需要找到直方图下最大矩形内的条形索引。 在此链接中解释了在直方图下找到最大矩形的方法
http://www.geeksforgeeks.org/largest-rectangle-under-histogram/
以及网络上的许多其他链接。我无法检索输出矩形内的条形索引。 有任何想法吗? 谢谢
答案 0 :(得分:0)
从您发布的链接:
对于hist [tp],'left index'是堆栈中的前一个(tp之前)项,'right index'是'i'(当前索引)。
所以你必须编辑getMaxArea()方法来存储最大区域的左右索引:
int getMaxArea(int hist[], int n)
{
// ..
int rindex=0;
int lindex=0;
while (i < n)
{
//..
if (max_area < area_with_top)
{max_area = area_with_top;
lindex=i-(max_area/hist[tp])+1;
rindex=i;
}
//..
}
while (s.empty() == false)
{
//..
if (max_area < area_with_top)
{max_area = area_with_top;
lindex=i-(max_area/hist[tp])+1;
rindex=i;
}
//..
}
//..
cout << "indexs: " << lindex << " " << rindex << "\n"; // u may pass them to main method, if needed
return max_area;
}
我不是c ++程序员,所以你可以优化我的尝试, 您可以在此处找到已编辑的代码:ideone: online compiler