你这句话有问题
```cpp
for(int m=a[0][x];m<=a[0][x];m++)
```
初始值与终止相同
by wkjwkj @ 2020-02-07 20:21:30
@[Brucehjh2006](/user/315080) 说清楚,是怎么了?
by MicroMaker @ 2020-02-07 20:21:42
你的这个代码问题有点多;首先,你貌似没有理解数组定义的规则,例如:int a[1][M-1];你定义的这个数组是达到不了a[1][n]这种的,如果你想开到1,应该定义a[2][M-1],其他也是一样,另外,由于这道题中,你用一个数组的下标来表示树的坐标,所以建议你下标从1开始,但考虑到一排树的头和尾都有树,那么0这个位置也是有树的,那么应该定义的数组范围是t[L]其中应该是从0~L;其次,for(int m=a[0][x];m<=a[0][x];m++)这一句也出现了问题,应该是循环从地铁站的左到右,那么你应该改为for(int m=a[0][x];m<=a[1][x];m++);在其次,在 for(int i=0;i<=M-1;i++)中,应该尝试去理解变量的意思,在你的代码中,M代表是地铁站的数量而非树的数量,应该改为L。
## **给你改的代码如下(按上文的意思做了改动)**
```cpp
#include <bits/stdc++.h>
using namespace std;
int main()
{
int L,M;
scanf("%d%d",&L,&M);
int a[2][M+1];
for(int i=1;i<=M;i++)
{
cin>>a[0][i]>>a[1][i];
}
bool t[L+1];
for(int i=0;i<=L;i++)
{
t[i]=true;
}
for(int x=1;x<=M;x++)
{
for(int m=a[0][x];m<=a[1][x];m++)
{
t[m]=false;
}
}
int out=0;
for(int i=0;i<=L;i++)
{
if(t[i]==true)
{
out++;
}
}
printf("%d",out);
return 0;
}
```
by C_hzh @ 2020-02-07 20:51:25
自学的(^-^)
by Brucehjh2006 @ 2020-02-08 08:38:34
Thanks\!
by Brucehjh2006 @ 2020-02-08 08:39:51
大家真热心啊\!
by Brucehjh2006 @ 2020-02-08 08:51:17