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:
每筆測資輸出需要修補的道路總長度於一行。
範例:
題目來源: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 就完成了!
完整程式碼如下
留言
張貼留言