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;

}

猜你喜欢

转载自www.cnblogs.com/minghaomaopao/p/10053576.html