考察最大的矩形,其特點是至少有一根柱子達到了頂點然後雙指標法即可
#include
#include
#include
using
namespace
std;
int main()
//考察最大的矩形,其特點是至少有一根柱子達到了頂點
//所以,採用的方式是列舉中間柱子,兩邊擴充套件求面積,過程中標記最大值
int lo,hi;//左右指標,i表示最高的柱子,(lo,hi)表示是矩形的邊界
for(int i=0;iwhile(lo>=0&&vec[lo]>=vec[i])lo--;
while(hi=vec[i])hi++;
//printf("%d %d %d\n",i,lo,hi);
maxn=max(maxn,(hi-lo-1)*vec[i]);
}printf("%d\n",maxn);
return
0;}
最大的矩形 201312 3
問題描述 在橫軸上放了n個相鄰的矩形,每個矩形的寬度是1,而第i 1 i n 個矩形的高度是h i。這n個矩形構成了乙個直方圖。例如,下圖中六個矩形的高度就分別是3,1,6,5,2,3。請找出能放在給定直方圖裡面積最大的矩形,它的邊要與座標軸平行。對於上面給出的例子,最大矩形如下圖所示的陰影部分,面...
201312 3 最大的矩形
試題編號 201312 3 試題名稱 最大的矩形 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 在橫軸上放了n個相鄰的矩形,每個矩形的寬度是1,而第i 1 i n 個矩形的高度是h i。這n個矩形構成了乙個直方圖。例如,下圖中六個矩形的高度就分別是3,1,6,5,2,3。請找出...
201312 3 最大的矩形
問題描述 在橫軸上放了n個相鄰的矩形,每個矩形的寬度是1,而第i 1 i n 個矩形的高度是h i。這n個矩形構成了乙個直方圖。例如,下圖中六個矩形的高度就分別是3,1,6,5,2,3。請找出能放在給定直方圖裡面積最大的矩形,它的邊要與座標軸平行。對於上面給出的例子,最大矩形如下圖所示的陰影部分,面...