APCS 實作題 10503 第3題線段覆蓋長度參考解法

Ping-Lun Liao
2 min readNov 19, 2019

--

此題在高中生程式解題系統的題號為: b966: 第 3 題 線段覆蓋長度

筆者的解題作法:
方法一(C程式碼):
此方法有可能會得到70分,無法得到100分,但高中生程式解題系統讓筆者過了!?
用一個布林陣列 p 來記錄那些地方有被畫線,以及紀錄所有線段上的最小值 min 與最大值 max,接著用迴圈從 min 到 max 計算有多少地方被畫線,見下圖。

方法二(C++程式碼):
使用一個結構陣列 struct Point p 來記錄所有線段,並將此結構陣列由小排到大(見下圖),

接著在判斷目前的線段是否有所覆蓋下一個線段,而這有三種狀況:
1. 完全覆蓋下一線段,此情況 直接繼續下一線段的判斷
2. 部分覆蓋,將 目前線段的結尾更新為下一線段的結尾
3. 沒有覆蓋下一線段,計算目前連線起來的線段長度,並 加總到總長度 cnt

Originally published at https://yunlinsong.blogspot.com.

--

--

No responses yet