在直方图中的最大矩形区域中查找条形索引

时间:2015-04-01 10:03:44

标签: c# algorithm visual-studio-2012 image-processing

我有一个直方图,我需要找到直方图下最大矩形内的条形索引。 在此链接中解释了在直方图下找到最大矩形的方法

http://www.geeksforgeeks.org/largest-rectangle-under-histogram/

以及网络上的许多其他链接。我无法检索输出矩形内的条形索引。 有任何想法吗? 谢谢

1 个答案:

答案 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