201312-3最大的矩形
阿新 • • 發佈:2019-01-09
一、原題
問題描述
試題編號: | 201312-3 |
試題名稱: | 最大的矩形 |
時間限制: | 1.0s |
記憶體限制: | 256.0MB |
問題描述: |
問題描述 在橫軸上放了n個相鄰的矩形,每個矩形的寬度是1,而第i(1 ≤ i ≤ n)個矩形的高度是hi。這n個矩形構成了一個直方圖。例如,下圖中六個矩形的高度就分別是3, 1, 6, 5, 2, 3。 輸入格式 第一行包含一個整數n,即矩形的數量(1 ≤ n ≤ 1000)。 輸出格式 輸出一行,包含一個整數,即給定直方圖內的最大矩形的面積。 樣例輸入 6 樣例輸出 10 |
二、解答
這是一道簽到題,雖然是第三題但是沒有難度。可是如此簡單的題目用了30分鐘是不應該的。第一次編譯出錯,沒有iostream和std,第二次編譯出錯,沒有stdio,第三次提交發現了自己邏輯錯誤,因為不一定矩形中最矮的在矩形的兩邊,因此漏解。第四次是因為沒有定義k。第五次就對了。
#include <iostream> using namespace std; int main(){ int n; cin>>n; int i,j,k; int arr[1000]; for(i=0;i<n;i++){ cin>>arr[i]; } int smax=0; for(i=0;i<n;i++){ int height=arr[i]; int width=1; for(j=i+1;j<n;j++){ if(arr[j]<height){ break; } } for(k=i-1;k>=0;k--){ if(arr[k]<height){ break; } } width=j-k-1; if(height*width>smax){ smax=height*width; } } cout<<smax; return 0; }