洛谷的输入最后有不是回车的吗
查看原帖
洛谷的输入最后有不是回车的吗
1289975
shuiyuans楼主2024/3/3 17:15

为什么下面两种输入会有超时 方法一:(不会超时)

#include <stdio.h>
#include <stdbool.h>
#include <string.h>
int main()
{
    int a=0,b=0,c=0;
    char d[259];
    scanf("%s",d);
    bool af=false,bf=false,cf=false;
    for(int i=0;i<strlen(d);i++)
    {
        char t=d[i];
        if(t=='a')
        {
           af=true;
           if(bf)
           b=a;
           if(cf)
           c=a;
        }

            
        if(t=='b')
        {
            bf=true;
            if(af)
            a=b;
            if(cf)
            c=b;
        }
        if(t=='c')
        {
            cf=true;
            if(af)
            a=c;
            if(bf)
            b=c;
        }
        if(t>='0'&&t<='9')
        {
            if(af)
            {
                af=false;
                a=t-'0';
            }
            if(bf)
            {
                bf=false;
                b=t-'0';
            }
            if(cf)
            {
                cf=false;
                c=t-'0';
            }
        }
        if(t==';')
        {
            af=false;
            bf=false;
            cf=false;
        }
    }
    printf("%d %d %d",a,b,c);
}
方法2:(一个字符一个字符的输入的时候有些测试点就会超时)
```cpp
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
int main()
{
    int a=0,b=0,c=0;

    bool af=false,bf=false,cf=false;
    while(true)
    {
        char t=getchar();
        if(t=='\n')
            break;
        if(t=='a')
        {
            af=true;
            if(bf)
                b=a;
            if(cf)
                c=a;
        }


        if(t=='b')
        {
            bf=true;
            if(af)
                a=b;
            if(cf)
                c=b;
        }
        if(t=='c')
        {
            cf=true;
            if(af)
                a=c;
            if(bf)
                b=c;
        }
        if(t>='0'&&t<='9')
        {
            if(af)
            {
                af=false;
                a=t-'0';
            }
            if(bf)
            {
                bf=false;
                b=t-'0';
            }
            if(cf)
            {
                cf=false;
                c=t-'0';
            }
        }
        if(t==';')
        {
            af=false;
            bf=false;
            cf=false;
        }
    }
    printf("%d %d %d",a,b,c);
}
2024/3/3 17:15
加载中...