感觉挺顺畅的为什么不输出

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

Ewuyou @ 2023-09-26 11:06:34


int main()
{
    int q,d;
    d=0;
    int m,n;
    int a[10000];
    int b[10000];
    int c[10000];
    scanf("%d %d",&m,&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d %d",&b[i],&c[i]);
    }
    for(int i=1;i<=m;i++)
    {
        a[i]=0;
    }
    for(int i=1;i<=n;i++)
    {
        q=0;
        while(q<=c[i])
    {
        q=b[i];
        a[i]=1;
        q++;

    }
    }
    for(int j=1;j<=m;j++)
    {
        if(a[j]==1)
        {
            d++;
        }
    }
    printf("%d",d);
    return 0;
}```

by zzyxl_qaq @ 2023-09-26 11:36:15

    while(q<=c[i])
    {
        q=b[i];
        a[i]=1;
        q++;

    }

这里每次循环开始都会 q=b[i],所以你 q 的值只会是 b[i]b[i]+1,这里自然就死循环了


by Crab_Tang @ 2023-09-26 11:36:33

@Ewoyou 头文件大哥


by Crab_Tang @ 2023-09-26 11:37:06

@Ewuyou 没有stdio头文件怎么输出啊


by Tjaweiof @ 2023-09-26 11:48:07

@Robots75 不知道就别乱说,他只放了主函数


by Crab_Tang @ 2023-09-26 11:55:49

《红题需要红名大佬来解》 @Tjaweiof


by 浅入深出 @ 2023-09-26 11:56:59

问题蛮多的,改了半天才改好

#include<bits/stdc++.h>
using namespace std; 

int q,d;
int m,n;
int a[10000];
int b[10000];
int c[10000];
// 改了半天,发现只有开成全局才能过
int main(){

    scanf("%d %d",&m,&n);
    for(int i=1;i<=n;i++){
        scanf("%d %d",&b[i],&c[i]);
    }
    /*
    for(int i=0;i<=m;i++) // 从 0 开始 
    {
        a[i]=0;
    }
    */
    for(int i=1;i<=n;i++){
        /*
        q=0;
        while(q<=c[i]){
            q=b[i];
            a[i]=1;
            q++;
        }
        */ // 这里无意义 会死循环 
        for(int j=b[i]; j<=c[i]; j++){
            a[j]=1;
        }
    }
    for(int j=0;j<=m;j++){    // 从 0 开始 
        if(a[j]==0){   // 这里应该是统计 0 的个数(未挖走的) 
            d++;
        }
    }
    cout<<d<<endl;
    return 0;
}

by Tjaweiof @ 2023-09-26 12:00:58

@Robots75 No,I'm not a dalao.I'm a juruo!!!


by Tjaweiof @ 2023-09-26 12:02:14

@Robots75 虽然只是红题,想当年,我也是提交了四次才过的。


by Tjaweiof @ 2023-09-26 12:03:36

@浅入深出 这样在 l=10^4 的时候会RE,这题数据水。


by Tjaweiof @ 2023-09-26 12:04:04

@浅入深出 数组要开到 10001


| 下一页