求佬指正 90分

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

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 谢谢明白啦


|