【題目地址】
http://acm.hdu.edu.cn/showproblem.php?pid=1506
【題目大意】
給出n(n<=100000)個木板的高度,寬度均爲1,將n個木板豎成一排,在上面截取長方形,求最大面積。
【解題思路】
對於每一塊木板,Area=height[i]*(j-k+1) 設其中任一塊x, j<=x<=k, height[x]>=height[i]; 找j,k成爲關鍵。
一般方法肯定超時,
利用動態規劃,如果它左邊高度大於等於它本身,那麼它左邊的左邊界一定滿足這個性質,再從這個邊界的左邊迭代下去
PS: 1. 題目中height可能爲0,初始化height數組爲-1,防止死循環。
2. 結果可能超出int,height初始爲__int64 或運算前強轉化爲__int64。運算過程中int會溢出。
【代碼】