不找了找不到了

MaratonIME eats japanese food

题目链接:Gym - 101375C

呃,wa多遍的教训告诉我们,做流程题的时候一定要 及时写下思路 再敲,要不然半路就会丢三落四少很多东西。。

这次不贴ac代码,分析一下这个错题的错误点和不好的地方。

#include <stdio.h>
struct node
{
    int x,y,r;
} a[1003];//首先,数组开小了,5000个数,1000是数字范围
int main()
{
    int n,i,cont=0,o,d2,q,w,e,f,j;
    char cz[3];
    scanf("%d",&n);
    for(i=1; i<=n; i++)
    {
//看到后面就会发现这个循环很蹩脚,即使不存i仍然+1,导致a[i]里没数,后来遍历的时候就尴尬了。
        scanf("%s %d %d %d",cz,&q,&w,&e);//也可以用getchar,%c的组合
        if(i==1&&cz[0]=='A')
        {
            a[i].x=q,a[i].y=w,a[i].r=e;//代码虽然短,但分行写真的更清楚
            cont++;
            printf("Ok\n");
        }
        else if(i==1)//没有注意table只有100cm,须判断如若>100则无论ad都输出no
            printf("No\n");
        else if(cz[0]=='A')
        {
            for(j=1,f=1; j<=cont; j++)//标记变量太多导致层次不清晰,直接用j状态判断即可
            {
                if(a[j].x==q&&a[j].y==w&&a[j].r!=0)
                {
                    f=0;
                    printf("No\n");
                    break;
                }
                else
                {
                    d2=(a[j].x-q)*(a[j].x-q)+(a[j].y-w)*(a[j].y-w);
                    if(d2<(a[j].r+e)*(a[j].r+e))
                    {
                        f=0;
                        printf("No\n");
                        break;
                    }
                }
            }
            if(f)
            {
                a[i].x=q,a[i].y=w,a[i].r=e;
                cont++;
                printf("Ok\n");
            }
        }
        else if(cz[0]=='R')
        {
            o=1;
            for(j=1,f=1; j<=cont; j++)
                if(a[j].x==q&&a[j].y==w&&a[j].r==e)
                {
                    a[j].x=a[j].y=a[j].r=0;
//这里本是为缩短时间而设计,但如果取出次数太多,后来遍历的时候的次数将越来越大,反而弄巧成拙
//不妨两种都试一下,若取出次数少,就用将数组前推的方式删除元素
                    o=0;
                    printf("Ok\n");
                    cont++;//应该是cont--
                    break;
                }
            if(o)printf("No\n");
        }
    }
    return 0;
}

啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

真的找不到哪错了卡了几个小时,judge只过了两组数据,Orz 不做了,教训不找了找不到了。de不出的bug,就整理思路重写吧

溜了~

猜你喜欢

转载自blog.csdn.net/flyf000/article/details/81813028