2008年10月26日 星期日

Problem 105 The Skyline Problem,天際線問題

這個題目我之前使用邏輯方式企圖解算,可是總有些問題無法解決。記得有找到一個建議,使用height[10000]來紀錄每一個點的高度,今天總算有點時間,解解看,果然很方便。
以下的C語言程式碼是在讀入每個建築資訊後,用來修訂每一個點的建築高度,其中l, h, r 是讀取的輸入值。
for (i=l;i<r;i++)
if (height[i] < h)
height[i] = h;

讀完後,直接從高度current = 0開始,只要高度有變化,就列印出座標點與高度,很容易就做完了。程式碼如下:
if (height[i] != current)
{
current = height[i];
/* print a space if not the first output */
printf("%d %d", i, current);
}

要注意有 presentation error問題,因為輸出不可以隨便加空白。
p105題目連結
回ACM題庫目錄
回首頁

沒有留言: