题目说“这里只给出符号在相应集合中的序号(从 1 开始)”
说是这么说,但是他有可能给你的是0或者是负数
不能仅仅判断序号小于集合中元素个数
还要判断序号是否大于0
#include <iostream>
#include"stdlib.h"
#include <vector>
#include <string>
#include <cstdio>
//scanf printf防止超时
#include <algorithm>
//vector的sort
#include <sstream>
//转换
using namespace std;
#include<iomanip>
//精度
#include<cmath>
//round四舍五入取整
int main()
{
string hand,eye,mouth;
getline(cin,hand);
getline(cin,eye);
getline(cin,mouth);
vector<string>h,e,m;
for(int i=0;i<hand.length();i++)
{
if(hand[i]==‘[‘)
{
for(int j=i+1;j<hand.length();j++)
{
if(hand[j]==‘]‘)
{
string t=hand.substr(i+1,j-i-1);
h.push_back(t);
break;
}
}
}
}
/*
for(int i=0;i<h.size();i++)
{
cout<<h[i]<<endl;
}*/
for(int i=0;i<eye.length();i++)
{
if(eye[i]==‘[‘)
{
for(int j=i+1;j<eye.length();j++)
{
if(eye[j]==‘]‘)
{
string t=eye.substr(i+1,j-i-1);
e.push_back(t);
break;
}
}
}
}
/*for(int i=0;i<e.size();i++)
{
cout<<e[i]<<endl;
}*/
for(int i=0;i<mouth.length();i++)
{
if(mouth[i]==‘[‘)
{
for(int j=i+1;j<mouth.length();j++)
{
if(mouth[j]==‘]‘)
{
string t=mouth.substr(i+1,j-i-1);
m.push_back(t);
break;
}
}
}
}
/*for(int i=0;i<m.size();i++)
{
cout<<m[i]<<endl;
}*/
int num;
cin>>num;
for(int i=0;i<num;i++)
{
int n1,n2,n3,n4,n5;
scanf("%d %d %d %d %d",&n1,&n2,&n3,&n4,&n5);
if(n1>0&&n1<=h.size()&&n2>0&&n2<=e.size()&&n3>0&&n3<=m.size()&&n4>0&&n4<=e.size()&&n5>0&&n5<=h.size())
cout<<h[n1-1]<<"("<<e[n2-1]<<m[n3-1]<<e[n4-1]<<")"<<h[n5-1]<<endl;
else
cout<<"Are you kidding me? @\\/@"<<endl;
}
return 0;
}
PAT(Basic Level) Practice : 1052 卖个萌 (20分)
原文:https://www.cnblogs.com/zchq/p/13733162.html