Echordy @ 2022-11-06 22:22:30
#include<stdio.h>
int main(void){
int l,m;
int i;
scanf("%d %d",&l,&m);
int u,v,j=0;
int b[10005];
int count=0;
for(i=1;i<=m;i++){
scanf("%d%d\n",&u,&v);
for(j=u;j<=v;j++){
b[j]=1;
}
}
for(i=0;i<=l;i++){
if(b[i]==1){
count++;
}
}
printf("%d\n",l+1-count);
}
by zfj123456 @ 2022-11-06 22:48:34
emmm你的b数组是局部变量会造成一些我也不是很清楚的问题,反正只需要把b放在外面就好啦。
下面是代码
#include<stdio.h>
int b[10005];
int main(void){
int l,m;
int i;
scanf("%d %d",&l,&m);
int u,v,j=0;
int count=0;
for(i=1;i<=m;i++){
scanf("%d%d\n",&u,&v);
for(j=u;j<=v;j++){
b[j]=1;
}
}
for(i=0;i<=l;i++){
if(b[i]==1){
count++;
}
}
printf("%d\n",l+1-count);
}
@Vanishsss
by chenyucheng_1 @ 2022-11-08 15:41:33
洛谷用的是linux测评吧,如果用Linux,你的b数组是随机数,如果在main()函数之外的就自动初始化为0,不会成随机数,或者
#include<stdio.h>
#include<cstring>
int main(void){
int l,m;
int i;
scanf("%d %d",&l,&m);
int u,v,j=0;
int b[10005];
memset(b,0,sizeof(b));
int count=0;
for(i=1;i<=m;i++){
scanf("%d%d\n",&u,&v);
for(j=u;j<=v;j++){
b[j]=1;
}
}
for(i=0;i<=l;i++){
if(b[i]==1){
count++;
}
}
printf("%d\n",l+1-count);
return 0;
}
建议用 #include<bits/stdc++.h>头文件
by Echordy @ 2022-11-09 23:51:14
@zfj123456 谢谢谢谢
by Echordy @ 2022-11-09 23:52:08
@chenyucheng_1 谢谢明白啦