题目:1052 卖个萌 - PAT (Basic Level) Practice (中文) (pintia.cn)
#include<bits/stdc++.h>
using namespace std;
vector<string>v[3];
map<string,int>m,m1,m2;
int main()
{
//用字符串来读取三行表情
for(int i=0;i<3;i++)
{
string s;getline(cin,s);
//把每行表情都存放到vector里面
for(int j=0;j<s.size();j++)
{ string temp;
if(s[j]=='[')
{
while(s[++j]!=']'&&j<s.size())
temp+=s[j];
//把手眼口表情分别存入三个数组
v[i].push_back(temp);
//给每个表情都做标记,为下文用户输入的表情有没有
if(i==0)m[temp]=1;
if(i==1)m1[temp]=1;
if(i==2)m2[temp]=1;
}
}
}
// //检测输入部分是否有问题 已检验,无
// for(int i=0;i<3;i++)
// {
// for(int j=0;j<v[i].size();j++)
// {
// cout<<v[i][j];
// }
// cout<<endl;
// }
//读取用户的表情
int k=0;cin>>k;
for(int i=0;i<k;i++)
{
int a,b,c,d,e;cin>>a>>b>>c>>d>>e; //左手 左眼 口 右眼 右手
a--,b--,c--,d--,e--; //下标从0开始
if(a<v[0].size()&&b<v[1].size()&&c<v[2].size()&&d<v[1].size()&&e<v[0].size()) //防止段错误
{
if(m[v[0][a]]&&m1[v[1][b]]&&m2[v[2][c]]&&m1[v[1][d]]&&m[v[0][e]]) //如果用户输入的表情都存在
{
printf("%s(%s%s%s)%s\n",v[0][a].c_str(),v[1][b].c_str(),v[2][c].c_str(),v[1][d].c_str(),v[0][e].c_str());
}
else
printf("Are you kidding me? @\\/@\n");
}
else
{
printf("Are you kidding me? @\\/@\n");
}
}
return 0;
}