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<cstdio>
#include<iostream>
#include<cstring>
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<cstdio>
#include<iostream>
#include<cstring>
#include<map>
using namespace std;
int main()
{
int n=0,m=0,i=0,k=0,f=0,t=0,a;
string s;
map<string,int>mp;
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;
}