1052. 卖个萌 (20)

来源:互联网 发布:caffe dropout层 编辑:程序博客网 时间:2024/05/29 13:07

题目链接

题目:

萌萌哒表情符号通常由“手”、“眼”、“口”三个主要部分组成。简单起见,我们假设一个表情符号是按下列格式输出的:

[左手]([左眼][口][右眼])[右手]

现给出可选用的符号集合,请你按用户的要求输出表情。

输入格式:

输入首先在前三行顺序对应给出手、眼、口的可选符号集。每个符号括在一对方括号[]内。题目保证每个集合都至少有一个符号,并不超过10个符号;每个符号包含1到4个非空字符。

之后一行给出一个正整数K,为用户请求的个数。随后K行,每行给出一个用户的符号选择,顺序为左手、左眼、口、右眼、右手——这里只给出符号在相应集合中的序号(从1开始),数字间以空格分隔。

输出格式:

对每个用户请求,在一行中输出生成的表情。若用户选择的序号不存在,则输出“Are you kidding me? @\/@”。

输入样例:
[╮][╭][o][~\][/~]  [<][>] [╯][╰][^][-][=][>][<][@][⊙][Д][▽][_][ε][^]  ...41 1 2 2 26 8 1 5 53 3 4 3 32 10 3 9 3
输出样例:
╮(╯▽╰)╭<(@Д=)/~o(^ε^)oAre you kidding me? @\/@

题解:

一个简单的字符串处理题目。处理一下输入的数据,保存到二维数组中,然后根据要求调用即可。

代码:

#include <cstdio>#define MAX 5#define MAX_CH 10void readExp (char array[][MAX], int* count) {int i = 0, j = 0,  flag = 0;char temp;while((temp = getchar()) != '\n') {if(temp == '[' && !flag){j = 0;flag = 1;}else if(temp == ']' && flag) {array[i][j] = '\0';i++;flag = 0;}else if(flag){array[i][j++] = temp;}}*count = i;}int main() {char hand[MAX_CH][MAX], eye[MAX_CH][MAX], mouth[MAX_CH][MAX];int hand_count = 0, eye_count = 0, mouth_count = 0;readExp(hand, &hand_count);readExp(eye, &eye_count);readExp(mouth, &mouth_count);int k, h1, e1, m, e2, h2;scanf("%d", &k);for(int i = 0; i < k; i++){scanf("%d %d %d %d %d", &h1, &e1, &m, &e2, &h2);if(h1 < 1 || h1 > hand_count ||   h2 < 1 || h2 > hand_count ||   e1 < 1 || e1 > eye_count ||   e2 < 1 || e2 > eye_count ||   m < 1 || m > mouth_count){   printf("Are you kidding me? @\\/@\n");   continue;   }printf("%s(%s%s%s)%s\n", hand[h1 - 1], eye[e1 - 1],mouth[m - 1],eye[e2 - 1],hand[h2 - 1]);}return 0;}


原创粉丝点击