[C_AR201-易] 城市地圖
Time Limit: 2 seconds
問題描述 :
你是市政府的建築師,市長給你一個任務,希望你能繪出城市的二度平面圖,以便看出城市的輪廓。市政府資料裡的每一幢建築物,都是以三維資料在儲存(Li Ri Hi),其中代表建築物的左邊起點,代表建築物的右邊起點,代表建築物的高度;你的任務是畫出城市的輪廓,繪出每一個位置的高度,當建築物重疊時,則以較高的建築物為其高度。如有三幢建築物(0,8,5), (6,8,10), (10,12,10),得到的資料為(5,5,5,5,5,5,10,10,10,0,10,10,10),以此序列得到城市的輪廓,如下參考圖:
輸入說明 :
第1個數字代表有幾組資料要測試n( 1≤n≤10 ),
接下來的數字m (1≤m≤20),代表有幾幢房子在城市裡
接著有m行資料,代表每一幢房子的資料(Li Ri Hi),其中(0≤ Li, Ri, Hi ≤50)
輸出說明 :
印出n行資料,每一行的每個數字,代表對應位置的高度;每組資料以編號零的位置開始列印高度,以最後一個高度非零的位置做結尾,每個數字並以空白隔開
範例 :
說明:問題描述 :
你是市政府的建築師,市長給你一個任務,希望你能繪出城市的二度平面圖,以便看出城市的輪廓。市政府資料裡的每一幢建築物,都是以三維資料在儲存(Li Ri Hi),其中代表建築物的左邊起點,代表建築物的右邊起點,代表建築物的高度;你的任務是畫出城市的輪廓,繪出每一個位置的高度,當建築物重疊時,則以較高的建築物為其高度。如有三幢建築物(0,8,5), (6,8,10), (10,12,10),得到的資料為(5,5,5,5,5,5,10,10,10,0,10,10,10),以此序列得到城市的輪廓,如下參考圖:
輸入說明 :
第1個數字代表有幾組資料要測試n( 1≤n≤10 ),
接下來的數字m (1≤m≤20),代表有幾幢房子在城市裡
接著有m行資料,代表每一幢房子的資料(Li Ri Hi),其中(0≤ Li, Ri, Hi ≤50)
輸出說明 :
印出n行資料,每一行的每個數字,代表對應位置的高度;每組資料以編號零的位置開始列印高度,以最後一個高度非零的位置做結尾,每個數字並以空白隔開
範例 :
輸入範例 | 輸出範例 |
2 3 0 8 5 6 8 10 10 12 10 4 1 3 9 2 5 8 6 10 5 8 10 8 | 5 5 5 5 5 5 10 10 10 0 10 10 10 0 9 9 9 8 8 5 5 8 8 8 |
1. 雖然題目說m不會為零,可是測資當m=0,輸出0
2. 我沒想到建築物的高度不一定是整數,所以我把int改成double,就過了
- #include <iostream>
- #include <string>
- using namespace std;
- int main() {
- // [C_AR201-易] 城市地圖
- int n;//測資數0
- cin >> n;
- for(int i = 0;i < n;i++)
- {
- double array[50];
- int Max = -1;
- for(int j = 0;j < 50;j++)
- {
- array[j] = 0;
- }
- int numBuild;
- cin >> numBuild;
- if(numBuild != 0)
- {
- for(int j = 0;j < numBuild;j++)
- {
- double L, R, H;//左邊,右邊,高度
- cin >> L >> R >> H;
- if(R > Max)
- {
- Max = R;
- }
- for(int k = L;k <= R;k++)
- {
- if(array[k] < H)
- {
- array[k] = H;
- }
- }
- }
- bool zero = true;
- int ans[50];
- int count = 0;
- for(int j = Max;j >= 0;j--)
- {
- if(zero == true && array[j] == 0)
- {
- }
- else
- {
- ans[j] = array[j];
- zero = false;
- count++;
- }
- }
- for(int j = 0;j < count;j++)
- {
- if(j == 0)
- cout << array[j];
- else
- cout << " " << array[j];
- }
- cout << endl;
- }
- else
- {
- cout << "0" << endl;
- }
- }
- return 0;
- }
陣列應該要開51
回覆刪除LR距離是從0計算到50個
有51個元素