C语言,不明白了。。。而且怎样缩短时间呀?

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

不是`a[q][0]<=i<=a[q][1]` 是`a[q][0]<=i&&i<=a[q][1]` `while`没写`i++`
by wang1h @ 2023-08-08 17:45:10


@[zhaoanqiEtayo](/user/1027350) 中间两层 for 套一层 while 的循环可以缩成两层 for 循环 ``` for(q=0;q<m;q++) { for(i=a[q][0];i<=a[q][1];i++) { b[i]=1; } } ```
by wunaidedanjuan @ 2023-08-08 17:46:32


``` #include<stdio.h> #include<stdlib.h> int main() { int l,m,i,j,p,q; scanf("%d %d\n",&l,&m); int a[m][2],b[l+1]; for(i=0;i<m;i++) { for(j=0;j<2;j++) { scanf("%d ",&a[i][j]); } } for(p=0;p<=l;p++) { b[p]=0; } for(q=0;q<m;q++) { for(;a[q][0]<=a[q][1];a[q][0]++) { b[a[q][0]]=1; } } int c=0; for(i=0;i<=l;i++) { if(b[i]==0) { c++; } } printf("%d",c); return 0; } ```
by wang1h @ 2023-08-08 17:48:49


楼上正解 @[zhaoanqiEtayo](/user/1027350)
by wang1h @ 2023-08-08 17:49:33


```c #include<stdio.h> #include<stdlib.h> int main() { int l,m,i,j,p,q;//长度l,数目m scanf("%d %d\n",&l,&m); int a[100][2],b[l+1]; for(i=0;i<m;i++) { for(j=0;j<2;j++) { scanf("%d ",&a[i][j]); } } for(p=0;p<=l;p++) { b[p]=0; } for(q=0;q<m;q++) { for(i=a[q][0];i<=a[q][1];i++) { b[i]=1; } } int c=0; for(i=0;i<=l;i++) { if(b[i]==0) { c++; } } printf("%d",c); return 0; } ``` @[wang1h](/user/556072) 这样可以吗?
by zhaoanqiEtayo @ 2023-08-08 17:54:46


|