sdnuoj1052(模拟)

1052.水题3
Description
lg是妹子,这是大家众所周知的

但是lg有个恶趣味估计没人知道

好吧既然没有人知道就算了的吧

lg有的机器人,机器人能按照遥控器的指令来进行运动

具体的指令如下:

H&*^kf30pq 机器人走一步

f03u5klfj# 机器人走两步

lsuf9823ur 机器人走三步

skhf9832ht 机器人走四步

jdsifu9w8e 机器人退回起点

%^Ihdfskjf 机器人启动自爆倒计时

# %^% ^cxk 机器人结束自爆倒计时

KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲%^#tids 机器人发动自爆

98dfgoier# 机器人随机跑到某个角落

当机器人启动自爆倒计时的时候,在执行了10条其他非结束或发动自爆指令之后会自动爆炸

如果发动自爆的话直接自爆,如果机器人接收到随机跑到某个角落的指令,则会找不到其位置所在

现在遥控器在syc手里,lg想将其机器人收回,但是他只有syc的指令集,所以请你判断一下机器人能否找回来
Input
相关的指令
Output

如果lg能确切知道机器人走了多少步,且机器人没有自爆,那么是可以找回来的,输出Y,否则输出N

Sample Input
%^Ihdfskjf
lsuf9823ur
lsuf9823ur
lsuf9823ur
H&*^kf30pq
# %^% ^cxk
98dfgoier#
jdsifu9w8e

Sample Output
Y
这个题我做了好多遍啊,不知道为什么之前写的代码不对,一开始没用map…
这是错的。为什么?为什么?为什么??????欢迎解答,谢谢!

#include
#include
#include
using namespace std;
int main()
{
    int n,m,i,j,k,f,t;
    string s;
    i=0;
    m=0;
    n=0;
    f=0;
    k=0;
    t=0;
    while(cin>>s)
    {
        if(s=="H&*^kf30pq")
        {
            m++;
            if(n)
            {
                f++;
                if(f>=10)
                    k=1;
            }
        }
        else if(s=="f03u5klfj#")
        {
            m+=2;
            if(n)
            {
                f++;
                if(f>=10)
                    k=1;
            }
        }
        else if(s=="lsuf9823ur")
        {
            m+=3;
            if(n)
            {
                f++;
                if(f>=10)
                    k=1;
            }
        }
        else if(s=="skhf9832ht")
        {
            m+=4;
            if(n)
            {
                f++;
                if(f>=10)
                    k=1;
            }
        }
        else if(s=="jdsifu9w8e")
        {
            m=0;
            t=0;
            if(n)
            {
                f++;
                if(f>=10)
                    k=1;
            }
        }
        else if(s=="%^Ihdfskjf")
        {
            n=1;
            if(n)
            {
                f++;
                if(f>=10)
                    k=1;
            }
        }
        else if(s=="#$%^%$^cxk")
        {
            n=0;
            f=0;
        }
        else if(s=="$#%^#$tids")
            k=1;
        else if(s=="98dfgoier#")
            t=1;
    }
    if(k==0&&t==0)
        cout<<"Y"<<'\n';
    else if(k==1||t==1)
        cout<<"N"<<'\n';
    return 0;
}

后来我去百度了,于是按着AC代码改了改,终于改对了。比较啰嗦,换成switch比较好。

#include
#include
#include
#include
using namespace std;
int main()
{
    int n=0,m=0,i=0,k=0,f=0,t=0,a;
    string s;
    mapmp;
    mp["H&*^kf30pq"] = 1;
    mp["f03u5klfj#"] = 2;
    mp["lsuf9823ur"] = 3;
    mp["skhf9832ht"] = 4;
    mp["jdsifu9w8e"] = 5;
    mp["%^Ihdfskjf"] = 6;
    mp["#$%^%$^cxk"] = 7;
    mp["$#%^#$tids"] = 8;
    mp["98dfgoier#"] = 9;
    while(cin>>s)
    {
        a=mp[s];
        if(a==1)
        {
            m++;
            if(n)
            {
                f++;
                if(f>=10)
                    k=1;
            }
        }
        else if(a==2)
        {
            m+=2;
            if(n)
            {
                f++;
                if(f>=10)
                    k=1;
            }
        }
        else if(a==3)
        {
            m+=3;
            if(n)
            {
                f++;
                if(f>=10)
                    k=1;
            }
        }
        else if(a==4)
        {
            m+=4;
            if(n)
            {
                f++;
                if(f>=10)
                    k=1;
            }
        }
        else if(a==5)
        {
            m=0;
            t=0;
            if(n)
            {
                f++;
                if(f>=10)
                    k=1;
            }
        }
        else if(a==6)
            n=1;
        else if(a==7)
        {
            n=0;
            f=0;
        }
        else if(a==8)
            k=1;
        else if(a==9)
            t=1;
        s.clear();
    }
    if(k==0&&t==0)
        cout<<"Y"<<'\n';
    else if(k==1||t==1)
        cout<<"N"<<'\n';
    return 0;
}

你可能感兴趣的:(暴力,模拟)