1052. 卖个萌 (20)
时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue
萌萌哒表情符号通常由“手”、“眼”、“口”三个主要部分组成。简单起见,我们假设一个表情符号是按下列格式输出的:
[左手]([左眼][口][右眼])[右手]
现给出可选用的符号集合,请你按用户的要求输出表情。
输入格式:
输入首先在前三行顺序对应给出手、眼、口的可选符号集。每个符号括在一对方括号[]内。题目保证每个集合都至少有一个符号,并不超过10个符号;每个符号包含1到4个非空字符。
之后一行给出一个正整数K,为用户请求的个数。随后K行,每行给出一个用户的符号选择,顺序为左手、左眼、口、右眼、右手——这里只给出符号在相应集合中的序号(从1开始),数字间以空格分隔。
输出格式:
对每个用户请求,在一行中输出生成的表情。若用户选择的序号不存在,则输出“Are you kidding me? @\/@”。
输入样例:[╮][╭][o][~\][/~] [<][>] [╯][╰][^][-][=][>][<][@][⊙] [Д][▽][_][ε][^] ... 4 1 1 2 2 2 6 8 1 5 5 3 3 4 3 3 2 10 3 9 3输出样例:
╮(╯▽╰)╭ <(@Д=)/~ o(^ε^)oAre you kidding me? @\/@
#include <iostream> #include<algorithm> #include<sstream> using namespace std; #include <stdlib.h> #include <string> int main() { string *s1=new string[20]; string *s2 = new string[20]; string *s3 = new string[20]; string S1,S2,S3; int s11 = 0 , s22 = 0, s33 = 0; int *number = new int[10]; int i = 0,j=0; int a[5], temp=0,temp1=0,temp2=0; char c='['; number[1] = 0; number[3] = 0; number[2] = 0; int N; c = cin.get(); while(c!='\n'){ S1 += c; c = cin.get(); } c = cin.get(); while (c != '\n') { S2 += c; c = cin.get(); } c = cin.get(); while (c != '\n') { S3 += c; c = cin.get(); } for (i = S1.length() - 1; i >= 0; i--) { if (S1[i] == ']') break; if (S1[i] == '[') { S1[i] = '.'; break; } } for (i = S3.length() - 1; i >= 0; i--) { if (S3[i] == ']') break; if (S3[i] == '[') { S3[i] = '.'; break; } } for (i = S2.length() - 1; i >= 0; i--) { if (S2[i] == ']') break; if (S2[i] == '[') { S2[i] = '.'; break; } } for (i = 0; i < S1.length(); i++) { if (S1[i] == '[') { number[1]++; temp = ++i; while (S1[i] != ']') { i++; temp1++; } s1[number[1] - 1] = S1.substr(temp, temp1); temp = 0; temp1 = 0; } } for (i = 0; i < S2.length(); i++) { if (S2[i] == '[') { number[2]++; temp = ++i; while (S2[i] != ']') { i++; temp1++; } s2[number[2] - 1] = S2.substr(temp, temp1); temp = 0; temp1 = 0; } } for (i = 0; i < S3.length(); i++) { if (S3[i] == '[') { number[3]++; temp = ++i; while (S3[i] != ']') { i++; temp1++; } s3[number[3] - 1] = S3.substr( temp, temp1); temp = 0; temp1 = 0; } } cin >> N; if (N == 0) return 0; for (i = 0; i < N; i++) { for (j = 0; j < 5; j++) { cin >> a[j]; } if (a[0] > number[1] || a[1] > number[2] || a[2] > number[3] || a[3] > number[2] || a[4] > number[1] ) cout << "Are you kidding me? @\\/@" << endl; else if (a[0] <1 || a[1] <1 || a[2] <1 || a[3] <1 || a[4] <1) cout << "Are you kidding me? @\\/@" << endl; else cout << s1[a[0] - 1] <<"("<< s2[a[1] - 1] << s3[a[2] - 1] << s2[a[3] - 1] <<")"<< s1[a[4] - 1] << endl; } return 0; }
感想:
1.\要用\\转义输出
2.段错误的注意判断下界(狗东西)