麻烦各位大佬给纠正一下(30分)(C语言卑微新手在线求救)

P1047 [NOIP2005 普及组] 校门外的树

@[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


|