@[老冲怪](/user/44812) 你直接定一个最大值不就行了
by 已注销HeBhs37KwrDer @ 2020-02-01 18:57:39
@[Hopjac—Programmer](/user/168334)
直接按照题目说过的最大值设置吗?那为什么我会多一个呢?
by 老冲怪 @ 2020-02-01 18:59:25
注意题目……
减一就是了
by pidan @ 2020-02-01 19:02:35
1. 数组大小只能用常量设定。因此使用MAXN.
2. 长度是0~L 因此总长有$L+1$,你没有统计到标号为$L$的位置。
@[老冲怪](/user/44812)
by USER113968 @ 2020-02-01 19:06:15
@[CCC_XHR](/user/113968)
第一条我没看懂,找到最大值不还是变量吗?
第二个我在定义数组的时候就定义了L-1所以只有L个
by 老冲怪 @ 2020-02-01 19:13:05
@[老冲怪](/user/44812)
你在对区间的树进行移除时,写的是`k<b`,漏掉了下标为$b$的点。
改完的AC代码是这样的:
```c++
#include <stdio.h>
int number[10001];//全局变量初始为0
int main(){
int l;//马路的长度
int m;//有多少组
scanf("%d %d",&l,&m);
int i,p=0;
int a,b;
for(i=0;i<m;i++){
scanf("%d %d",&a,&b);
int k=a;
for(;k<=b;k++){//你漏掉了下标为b的点,这才是正确的。
number[k]=1;
}
}
for(i=0;i<=l;i++){//你漏掉了下表为l的点,这才是正确的
if(number[i]==0){
p++;
}
}printf("%d",p);
}
```
by USER113968 @ 2020-02-01 19:13:27
@[老冲怪](/user/44812)
直接将数组声明为最长长度+1,考虑最大情况,这里用的是数字,确定的数字就是常量。
by USER113968 @ 2020-02-01 19:14:35
@[CCC_XHR](/user/113968)
最后一个如果是
```
i<=l
```
我是从0开始的,所以不就会有L+1个
by 老冲怪 @ 2020-02-01 19:16:18
@[老冲怪](/user/44812)
看题目···题目说的是
> 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在LL的位置;数轴上的每个整数点,即0,1,2,…,L,都种有一棵树。
下标包括了0 也有 L ,数组从0开始,当引用下标为$L$的数组元素时,你就出问题了。
by USER113968 @ 2020-02-01 19:16:52
@[老冲怪](/user/44812)
L是从1开始数的,还有一个0呢。
by USER113968 @ 2020-02-01 19:17:37