賽碼網--馬路上的路燈(Java實現)
阿新 • • 發佈:2019-01-06
題目描述
城市E的馬路上有很多路燈,每兩個相鄰路燈之間的間隔都是1公里。小賽是城市E的領導,為了使E城市更快更好的發展,需要在城市E的一段長度為M的主幹道上的一些區域建地鐵。這些區域要是建了地鐵,就需要挪走相應的路燈。可以把長度為M的主幹道看成一個數軸,一端在數軸0的位置,另一端在M的位置;數軸上的每個整數點都有一個路燈。要建地鐵的這些區域可以用它們在數軸上的起始點和終止點表示,已知任一區域的起始點和終止點的座標都是整數,區域之間可能有重合的部分。現在要把這些區域中的路燈(包括區域端點處的兩個路燈)移走。你能幫助小賽計算一下,將這些路燈移走後,馬路上還有多少路燈?
輸入
輸入檔案的第一行有兩個整數M(1 <= M <= 10000)和 N(1 <= N <= 100),M代表馬路的長度,N代表區域的數目,M和N之間用一個空格隔開。接下來的N行每行包含兩個不同的整數,用一個空格隔開,表示一個區域的起始點和終止點的座標。 所有輸入都為整數。且M和N的範圍為上面提示範圍。 |
樣例輸入
500 3 |
輸出
輸出檔案包括一行,這一行只包含一個整數,表示馬路上剩餘路燈的數目。 |
樣例輸出
298 |
解題思路:剛開始做的時候,被與前面的資料進行比較難住了,考慮建立類什麼的來解決,但是沒解決出來,參考了一下大佬的程式碼,原來這麼簡單,用一個數組就可以解決了,唉,這次真的要做好筆記了~~~
程式碼:
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int M = sc.nextInt(); int N = sc.nextInt(); int[] road = new int[M+1]; for(int i = 0;i<N;i++){ int a = sc.nextInt(); int b = sc.nextInt(); for(int j=a;j<=b;j++){ road[j] = 1; } } int sum = 0; for (int i=0;i<M+1;i++){ if (road[i]==0) sum++; } System.out.println(sum); } }