c语言,答案正常,但除了第一个全是RE,是数组越界了吗,求大佬指教

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

bk492511 @ 2022-09-02 08:08:40

#include <stdio.h>

void csh(int* A,int a)
{
    int cir=0;
    for(cir=0;cir<=a;cir++)
    {
        A[cir]=cir;
    }
}

void yc(int* A,int c,int d)
{
    for(;c<=d;c++)
    {
        A[c]=-1;
    }
}

int pd(int* A,int a)
{
    int cir=0,count=0;
    for(cir=0;cir<=a;cir++)
    {
        if(A[cir]==cir)
        {
            count++;
        }
    }
    return count;
}

int main()
{
    int A[1000]={};
    int a=0,b=0,cir=0,c=0,d=0,end=0;
    scanf("%d%d",&a,&b);
    csh(A,a);//初始化
    for(cir=0;cir<b;cir++)
    {
        scanf("%d%d",&c,&d);
        yc(A,c,d);//拔树
    }
    end=pd(A,a);//判断
    printf("%d",end);
    return 0;
}

by 南阳刘子骥 @ 2022-09-02 08:26:54

@bk492511 是的。
数据范围是 n \leq 10^4 = 10000
而且开了大小为 n 的数组是访问不到第 n 位的,建议数组开 n+10 左右。


by 654179_qwq @ 2022-09-02 09:37:51

(建议开 \texttt{A[114514]}


by bk492511 @ 2022-09-02 16:47:04

@南阳刘子骥 @czx2009 大佬就是大佬,一语中的


|