https://pintia.cn/problem-sets/994805260223102976/problems/994805273883951104
1052 卖个萌 (20 分)
分析:一眼看去是水题,实际上是大坑题。用户选择有负数,cin空格会卡你。中文字符烦死人,转义字符要注意。眼高手低要不得,全部AC才可以。
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
vector<string>v[4];
void solve(string s,vector<string>&v){
int i=0,j=0;
while(i<s.size()-2){
if(s[i]!='['){
i++;
continue;
}
j=i+1;
while(j<s.size()){
if(s[j]!=']'){
j++;
continue;
}
v.push_back(s.substr(i+1,j-i-1));//要整串截取,有中文字符
i=j+1;
break;
}
}
}
int main()
{
//cout<<sizeof("╮")<<" "<<sizeof(char)<<endl;
//cout << "Hello world!" << endl;
string hand,eye,mouth;
getline(cin,hand);
getline(cin,eye);
getline(cin,mouth);
solve(hand,v[1]);
solve(eye,v[2]);
solve(mouth,v[3]);
int N;
cin>>N;
for(int i=0;i<N;i++){
vector<int>t;
int flag=1;
for(int j=0;j<5;j++){
int x;
cin>>x;
t.push_back(x);
if(x<1)flag=0;//可能是非正数
}
if(t[0]>v[1].size()||t[4]>v[1].size()||t[1]>v[2].size()||t[3]>v[2].size()||t[2]>v[3].size())flag=0;
if(flag==0)cout<<"Are you kidding me? @\\/@"<<endl;
else{
cout<<v[1][t[0]-1]<<"("<<v[2][t[1]-1]<<v[3][t[2]-1]<<v[2][t[3]-1]<<")"<<v[1][t[4]-1]<<endl;
}
}
return 0;
}
/*
[╮][╭][o][~\][/~] [<][>]
[╯][╰][^][-][=][>][<][@][⊙]
[Д][▽][_][ε][^]
*/
// for(int i=0;i<v1.size();i++){
// cout<<v1[i]<<"*";
// }
// cout<<endl;
// for(int i=0;i<v2.size();i++){
// cout<<v2[i]<<"*";
// }
// cout<<endl;
// for(int i=0;i<v3.size();i++){
// cout<<v3[i]<<"*";
// }