有位自行創業的園藝達人專長是幫客戶整理草坪,客戶草坪的邊界必須是
水平線以及垂直線,不可以是斜線,為了便於有系統的整理各種形狀的草坪,這
位園藝達人發展出一套有效率的草坪分區管理機制,方式是依草坪邊界的水平線
作延伸而將整個草坪切割成數個方塊(長方或正方形),然後再將切割出來的小草
坪依照其左下角頂點的座標以低至高以及左至右的順序來作排序,然後每日依此
排列順序固定整理幾塊小草坪,依序整理完整塊大草坪,這樣就不會有遺漏以及
有些地區的草太長的問題。在切割草坪時,園藝達人先沿著草坪邊界依逆時針方
向行走,並且記錄每條線的方向,如圖一(a)與圖二(a),他的原始想法是先將兩
條垂直線投影到y座標上,如果兩條垂直線在y座標上的投影有重疊即可產生一
塊小草坪,例如圖二的垂直線e1與e2在y座標上的投影有30單位的重疊線段(圖
二(b)的垂直長線段與垂直短線段分別顯示e1 與e2 在y 座標上的投影),因此可
以產生一高30 單位的小草坪,後來發現此想法有錯,例如垂直線e1 與e3 雖然
在y座標上的投影有20 個單位的重疊線段,但卻不能產生一個小草坪,同樣地,
e1 與e4 也有20 個單位的重疊線段,也不能產生一個小草坪,請幫園藝達人改
進其想法,寫出一個園藝草坪切割程式。圖一(b)與圖二(b)為正確的切割結果。
輸入範例1: 假設圖一(a)草坪的起始頂點為(0,0),輸入檔案的內容如下,注意,起始點與最後 一點兩點相鄰。 12 0 0 45 0 45 20 60 20 60 50 30 50 30 40 20 40 20 30 10 30 10 10 0 10 3 3 1 2 3 1 2 5 2 4 5 輸入範例2: 14 0 0 10 0 10 30 30 30 30 10 60 10 60 30 50 30 50 60 40 60 40 40 20 40 20 50 0 50 3 3 1 3 4 2 3 5 3 4 5
輸出範例1: 5 1250 1350 1300 1100 1050 輸出範例2: 5 1000 1100 1000 1300 900
感谢morris1028提供图片!
編號 | 身分 | 題目 | 主題 | 人氣 | 發表日期 |
沒有發現任何「解題報告」
|