题解 Luogu P1580 【yyy loves Easter_Egg I】

一言不合上代码:

#include<cstdio>
#include<cstring>
char s[100001],bz[100001],dmz[100001];
int maohao,xf,ls,sss,lll,xxf,xxxf;
int n,d,a[1000001],i,j,k,f,cjf,l;
int main() {
    ls=1;
    gets(s);//第一个要特殊输入,以便寻找队列要@的人
    l=strlen(s);
    if(s[l-1]=='/r')s[l-1]=' ';
    for(i=10; i<l; i++) {
        if(f) {
            k=0;
            for(j=i; j<l; j++) {//记录人名
                if(s[j]==' ')xxf++;
                if(xxf==3||s[j]==13)break;//特判符
                bz[lll]=s[j];
                lll++;
            }
            break;
        }
        if(s[i]=='@')f=1;
    }
    while(gets(s)) {//输到没有为止
        l=strlen(s);
        if(l<2)break;//以防结尾回车
        if(s[l-1]=='/r')s[l-1]=' ';
        ls++;
        if(cjf==0&&xf==0) {
            xxxf=0;
            char mz[100001]="yyy loves ";
            sss=10;
            j=0;
            f=0;
            l=strlen(s);
            for(i=0; i<l; i++) {
                if(s[i+1]==':') {
                    maohao=i;
                    break;
                }
                if(s[i]==bz[j])j++;
                mz[i]=s[i];
                sss++;
            }
            if(j==lll) {//油炸成功
                cjf=1;
                continue;
            }
            for(i=maohao+1; i<l; i++) {
                if(f) {
                    k=0;
                    for(j=i; j<l; j++) {
                        if(s[j]==bz[k])k++;
                        else break;
                    }
                    if(k!=lll)xf=ls;//队列被破坏
                    break;
                }
                if(s[i]=='@')f=1;
            }
            if(f==0)xf=ls;
            for(i=0; i<sss; i++)//录下当前说话的人的人名
                dmz[i]=mz[i];
            for(i=0; i<l; i++)if(s[i]=='@')xxxf++;
            if(xxxf>1) {//判断@个数
                xf=ls;
                break;
            }
        }
    }
    if(cjf)printf("Successful @%s attempt",bz);//输出
    else if(xf) {
        printf("Unsuccessful @%s attempt\n",bz);
        printf("%d\n",xf);
        puts(dmz);
    } else {
        printf("Unsuccessful @%s attempt\n",bz);
        printf("%d\n",ls);
        puts("Good Queue Shape");
    }
    return 0;
}

其实这道题并没有多难,只是许多坑罢了,要注意

(本人早期作品,勿喷)

posted @ 2019-05-13 20:44  一叶知秋‘  阅读(230)  评论(0编辑  收藏  举报