实例说明:
某校门外长度为L的马路上有一排树,每两棵树之间间隔是1米,把马路看成数轴,马路一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点(即0,1, ,…,L,)都种有一棵树,由于马路上有些区域要用来建地铁,已知任意区域的起始点和终止点的坐标都是整数,区域之间可能有重合部分。
现在要把这些区域中的树(包括端点)移走。计算移走后还有多少树。
输入要求:
输入样例:
500 3
150 300
100 200
470 471
输出样例:
298
程序代码:
#include <iostream>
using namespace std;
int main()
{
int L,M,i,j;
bool trees[10001];
int begin,end;
int count=0;
for(i=0;i<10001;i++)
trees[i]=1; //设定整个数轴上对应位置数为1;
cin>>L>>M;
for(int i=0;i<M;i++)
{
cin>>begin>>end;
for(j=begin;j<=end;j++)
trees[j]=0; //区域树移走后相应位置由1变为0
}
for(i=0;i<=L;i++)
{
if(trees[i]==1) //统计数组中所有为1的数即剩余树的个数。
count++;
}
cout<<count<<endl;
}