1. 程式人生 > >1024某校大門外長度為L的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是1米。我們可以把馬路看成一個數軸,馬路的一端在數軸0的位置,另一端在L的位置;數軸上的每個整數點,即0,1,2,……,L,都種有一棵樹。 由於馬路上有一些區域要用來建地鐵。這些區域用它們在數軸上的起始點和終止點表示。已知任一區域

1024某校大門外長度為L的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是1米。我們可以把馬路看成一個數軸,馬路的一端在數軸0的位置,另一端在L的位置;數軸上的每個整數點,即0,1,2,……,L,都種有一棵樹。 由於馬路上有一些區域要用來建地鐵。這些區域用它們在數軸上的起始點和終止點表示。已知任一區域

#include<stdio.h>

int main()

{

  int L, M, i, j, n;

  int a[10001], b[10001];

  scanf("%d %d",&L, &M); //輸入L和M

  n = M*2;//迴圈輸入b陣列0~n的資料

  for(i=0; i<n; i+=2)

    {

     scanf("%d %d", &b[i], &b[i+1]);

       }

    for(i=0; i<=L; i++) //迴圈給a陣列L個元素賦值

    {

     a[i] = i;

       }

       int r, s;

    for(i=0; i<n; i+=2) //遍歷訪問陣列b的各個區間

  {

               r = b[i]; //區間起始點

    s = b[i+1]; //區間終點

    for(j=r; j<=s; j++) //把陣列b各個區間內元素在陣列a中對映為0

    {

       a[j] = -1;

    }

   }

   int k=0; //k用來統計不是0的個數,k賦值為1(陣列a中原本包含一個0,此時加上)

  for(i=0; i<=L; i++)

   {

     if(a[i] != -1)

     {

      k++; //用來統計非0的個數,即不在陣列b區間內的數的個數

    }

   }

   printf("%d", k);

  return 0;

}