解题思路:
1.由题可知,数轴上每个整数点都代表着一棵树,一端在0的位置,另一端在L的位置,一共L+1颗树,那么可以利用布尔数组来表示是否有树,有的话值为1,没有的话值为0,方便理解
2.输入为两行,第一行两个整数,第一个整数为L,第二个数为区域数目数量,当已知L的时候,便可以利用循环来给每个数组的位置赋值为1,L的大小最大为10000,即数组开bool a[10005]即可,并且都赋值为1
3.已知区域的数目M,创建一个次数为M的for循环,接下来每次循环都输入两个数cin>>x>>y,此时创建内循环,j的值从x到y,依次赋值为0,代表这些点没有树木,具体写法为:
4.然后创建循环,从数组0到L的位置,依次判断,如果此位置的值是1,则sum++;
#include<bits/stdc++.h>
using namespace std;
int a[10005];
int main()
{
int l,m;//一共为l+1棵数m个区间
cin>>l>>m;
for(int i=0;i<=l;i++)
a[i]=1;//将所有的树都标记为1
int x,y,sum=0;//x和y为每个区间的起始位置
for(int i=1;i<=m;i++)
{
cin>>x>>y;
for(int i=x;i<=y;i++)//将本区间的所有树都赋值为0
a[i]=0;
}
for(int i=0;i<=l;i++)//遍历所有树木
{
if(a[i]==1)//如果数的标记为1
sum++;//计数器增加
}
cout<<sum;
return 0;
}