lg是妹子,这是大家众所周知的
但是lg有个恶趣味估计没人知道
好吧既然没有人知道就算了的吧
lg有的机器人,机器人能按照遥控器的指令来进行运动
具体的指令如下:
H&*^kf30pq 机器人走一步
f03u5klfj# 机器人走两步
lsuf9823ur 机器人走三步
skhf9832ht 机器人走四步
jdsifu9w8e 机器人退回起点
%^Ihdfskjf 机器人启动自爆倒计时
#$%^%$^cxk 机器人结束自爆倒计时
$#%^#$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和switch做就很好做了,判断条件题目描述的也很清楚
有一个地方容易注意不到的是——机器人跑到某个角落后并不一定输出为N
还有可能输入退回起点的指令
#include<iostream>
#include<map>
#include<string>
using namespace std;
int main()
{
map<string,int> a;
string s1;
a["H&*^kf30pq"] = 1;
a["f03u5klfj#"] = 2;
a["lsuf9823ur"] = 3;
a["skhf9832ht"] = 4;
a["jdsifu9w8e"] = 0;
a["%^Ihdfskjf"] = 5;//开始
a["#$%^%$^cxk"] = 6;//结束
a["$#%^#$tids"] = 7;//爆炸
a["98dfgoier#"] = 8;//跑了
//%^Ihdfskjf//开始
//lsuf9823ur
//lsuf9823ur
//lsuf9823urstep= 9;cnt = 3
//H&*^kf30pqstep = 10 cnt = 4
//#$%^%$^cxkstep = 10 cnt = 0
//98dfgoier# //跑了
//jdsifu9w8e
int step = 0;
int endflag = 0 , endcnt = 0;
int retflag = 0;
int stepflag = 0;
while(cin>>s1)
{
int cop = a[s1];
switch (cop)
{
case 1 : step++; if(endflag) endcnt++;break;
case 2 : step = step + 2;if(endflag) endcnt++;break;
case 3 : step = step + 3;if(endflag) endcnt++;break;
case 4 : step = step + 4;if(endflag) endcnt++;break;
case 0 : step = 0;stepflag = 0;if(endflag) endcnt++;break;
case 5 : endflag = 1;break;
case 6 : endflag = 0; endcnt = 0;break;
case 7 : retflag = 1;break;
case 8 : stepflag = 1;break;
}
if(endcnt == 10 )
{
retflag = 1;
}
s1.clear();
}
if(retflag == 1 || stepflag == 1)
{
cout<<"N"<<endl;
}
else if(retflag == 0 && stepflag == 0)
{
cout<<"Y"<<endl;
}
return 0;
}