求助大佬不知道为啥输出结果不对

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

bupt_dhh @ 2023-08-16 23:31:18

#include<stdio.h>
int main(){
    int l,m;
    scanf("%d %d",&l,&m);
    int len=l+1;
    int a[len]={1};//把【0,l】区间的树标记为1 
    int b1,b2; 
    int i,j;
    for(i=0;i<m;i++){
        scanf("%d %d",&b1,&b2);//起始点和终止点 
        for(j=b1;j<=b2;j++) 
            a[j]=0;//把起始点到终止点之间区域的树标记为0 
    }
    int num=0;
    for(int i=0;i<len;i++){
        if(a[i]==1)//遍历整个区间,如果标记为1则num总数加1 
            num++;
    }
    printf("%d",num);
    return 0;
}

by Lysea @ 2023-08-16 23:39:42

@bupt_dhh

int a[len]={1};

的意思是把a[0]复制为1,如果要全部赋值为1,建议用memset


by bupt_dhh @ 2023-08-16 23:47:05

@Tryst 谢谢大佬!一边学一边忘,gpt也找不到错误,我要走的路真的还很长。


by xvl_ @ 2023-08-17 00:05:24

@Tryst

怎么用 memset 将数组全部赋值为 1


by Lysea @ 2023-08-17 09:44:23

@xvl_

@bupt_dhh

一时脑抽,不是memset,是fill


by Lysea @ 2023-08-17 09:44:34

QWQ


by bupt_dhh @ 2023-08-17 16:13:31

@xvl_ memset为int类型数组赋值应该只能0或-1,我把数组初始化为-1然后就过啦


by xvl_ @ 2023-08-17 16:49:18

@bupt_dhh


|