E-tutor [程式設計][C_AR186-易] 道路修補

簡介

題目來源:e-tutor平台
[C_AR186-易] 道路修補

道路修補,每筆測資都給我們不只一段修補路段,每段路段皆不同地方,甚至還有重複修補的地方,而題目需要我們幫他找出總共有多少修補路段,而且不能計算到重複的區域,那我們該怎麼處理那麼多不同的道路修補路段呢?

讓我們先了解題目內容

問題描述:

因為有民眾投訴道路坑坑窪窪的,容易發生意外,考量到用路人的安全,政府決定對該道路進行修補。但基於成本考量,沒辦法將道路從頭到尾整修一遍,於是派出數支調查隊針對整條道路進行評估,再根據各隊評估結果計算出需進行修補的長度。舉例來說,現在有 3 個評估結果,分別為:(1) 3 到 5 公里處 (2) 6 到 13 公里處 (3) 10 到 14 公里處,則最後需要修補路段為 3 到 5 公里處以及 6 到 14 公里處,共計 10 公里的長度。現在請你寫個程式,根據每個評估結果,計算出需要修補的道路總長度。


Input:

第一行會有一個整數代表測資筆數。每筆測資第一行有一個整數 n 表示有 n 個評估結果 (1  ≤ n  ≤ 1000)。接下來有 n 行,每行有兩個整數 s 、 e ,表示在該評估結果中需要修補的路段,其中 0 ≤ s < e  ≤ 10000 ,數值間以一個空白隔開。

Output:

每筆測資輸出需要修補的道路總長度於一行。

範例:


解題想法:

把整條路段想像成一塊白色有格子的長方形,只要有修補的路段,就把修補路段的格子塗顏色,最後再去算有幾個格子有塗顏色。

例子:



※只要修補過就塗顏色,就可以解決重複修部部分會混亂的問題

第一步、要先處理輸入,宣告題目所需的條件

1. test 為測資筆數

2. number 為評估後需要修幾段路

3. ans 為最後要計算修補長度為多少

4. road 陣列為題目限制最大路段,全部預設0

輸入測資筆數、評估後修幾段路



第二步、設定評估後修幾段路的迴圈


迴圈:使用第一步輸入的 number 定為限制迴圈的變數

第三步、輸入路段的頭尾,並且塗顏色


宣告 2 個變數,begin 為修補路段的起頭,end 為修補路段的結尾

迴圈:起始值設為 begin,限制在 end,並且在修補範圍內的值都加一

※只要修補過的值都加一,代表塗顏色

第四步、搜尋所有路段,並且輸出答案


設定一個迴圈,從頭搜尋到尾

只要陣列數字不為 0 的,代表有塗過顏色

並且使用一開始所設的變數 ans 記錄下來

最後在輸出 ans 就完成了!

完整程式碼如下



留言

這個網誌中的熱門文章

E-tutor [程式設計][C_AR183-易] 數字跑馬燈

E-tutor [程式設計][C_CH10-中] The 3n + 1 problem

E-tutor [程式設計][C_AR182-中] 翻轉吧陣列