@[wangjialezuishuai](/user/279850)
你while语句的循环限制错了吧
```cpp
#include<cstdio>
#define N 10005
int main()
{
int a[N]={0};
int L,M;
int d,b;//要把left,right(就是你的d和b)定义在循环外,这样才不会被不断重新定义,节省时间(其实我也不知道有啥区别,反正我就定义在外面的)
scanf("%d %d",&L,&M);
while(M>0)//你这里的循环限制错了,应该是当M的值大于0时继续循环
{
scanf("%d %d",&d,&b);
for(int i=d;i<=b;i++)
a[i]=1;
M--;
}
int count=0;
for(int i=0;i<=L;i++)
if(a[i]==0) count++;
printf("%d\n",count);
return 0;
}
```
以上是我帮你改的
过了编译
现在是我的原版代码
```cpp
#include<bits/stdc++.h>
using namespace std;
int a[10005];
int main()
{
int l,m,left,right,ans=0;
cin>>l>>m;
for(int i=1;i<=m;i++){
cin>>left>>right;
for(int j=left;j<=right;j++)
a[j]=1;
}
for(int i=0;i<=l;i++){
if(a[i]==0)
ans++;
}
cout<<ans;
return 0;
}
```
c++版的
和你的差不多
你看下可以理解吗
by Henderson @ 2020-03-11 22:39:35
好的,谢谢大佬,可以理解
by wangjialezuishuai @ 2020-03-12 16:37:21