PAT 1052 卖个萌 25分

136 阅读1分钟

题目:1052 卖个萌 - PAT (Basic Level) Practice (中文) (pintia.cn)

解析:52_哔哩哔哩_bilibili

#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;
 } 

image.png