1052. 卖个萌 (20)
来源:互联网 发布:杨千嬅歌曲评价知乎 编辑:程序博客网 时间:2024/06/06 09:49
1052. 卖个萌 (20)
时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue
萌萌哒表情符号通常由“手”、“眼”、“口”三个主要部分组成。简单起见,我们假设一个表情符号是按下列格式输出的:
[左手]([左眼][口][右眼])[右手]
现给出可选用的符号集合,请你按用户的要求输出表情。
输入格式:
输入首先在前三行顺序对应给出手、眼、口的可选符号集。每个符号括在一对方括号[]内。题目保证每个集合都至少有一个符号,并不超过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? @\/@
/*************************************************************************> File Name: 1052.c> Author: YueBo> Mail: yuebowhu@163.com> Created Time: Sat 17 Jun 2017 11:12:01 PM CST ************************************************************************/#include <stdio.h>#include <string.h>#include <stdlib.h>#include <memory.h>int main(){ char zifu[3][64] = {0}; int index[3][64] = {0}; int user[1024][5]; int sz[3] = {0}; int K; int i, j, k; int val; char buffer[128] = {0}; int idx[5] = {0,1,2,1,0}; int flag; for (i = 0; i < 3; i++) { gets(zifu[i]); } for (i = 0; i < 3; i++) { j = 0; k = 0; while (zifu[i][j] != '\0') { if (zifu[i][j] == '[') { index[i][k] = j; k++; } if (zifu[i][j] == ']') { zifu[i][j] = 0; } j++; } sz[i] = k; }/* for (i = 0; i < 3; i++) { for (j = 0; j < sz[i]; j++) { printf("%s", &zifu[i][index[i][j]+1]); } printf("\n"); }*/ scanf("%d", &K); for (i = 0; i < K; i++) { for (j = 0; j < 5; j++) { scanf("%d", &user[i][j]); } } for (i = 0; i < K; i++) { flag = 0; memset(buffer, 0, 128); for (j = 0; j < 5; j++) { val = user[i][j]; if (val > sz[idx[j]]) { flag = 1; printf("Are you kidding me? @\\/@"); break; } strcat(buffer, &zifu[idx[j]][index[idx[j]][val-1]+1]); strcat(buffer, j == 0 ? "(" : ""); strcat(buffer, j == 3 ? ")" : ""); } printf("%s", flag == 0 ? buffer : ""); printf("\n"); } return 0;}
下面这段代码和自己的思想差不多,只不过博主把内容解析出来单独存了起来,原文参见http://blog.csdn.net/chr1991/article/details/51014817
从下面这个代码中得到的启发是,一个任务要进行适当的分解,一步一步的解决,不要一下子把几步的事情一下了了,这样的代码看起来很简洁,但是自己写的时候困难(调的时候困难),别人理解起来困难,分成一步一步的,不要耍快耍酷,怎么清楚明白怎么来.
具体到本题就是:
第1步:把眼,口,手,表情包分别解析出来,存到单独的内存中;
第2步:根据用户请求直接把表情调出来;
#include <stdio.h> #define MAX 5 #define MAX_CH 10 void read_expression(char array[][MAX], int* count); int main(int argc, const char * argv[]) { char hand[MAX_CH][MAX], eye[MAX_CH][MAX], month[MAX_CH][MAX]; int k, hand1, eye1, month1, eye2, hand2; int i, hand_count = 0, eye_count = 0, month_count = 0; read_expression(hand, &hand_count); read_expression(eye, &eye_count); read_expression(month, &month_count); scanf("%d", &k); for( i = 0; i < k; i++){ scanf("%d %d %d %d %d", &hand1, &eye1, &month1, &eye2, &hand2); if(hand1 <1 || hand1 > hand_count || hand2 < 1 || hand2 > hand_count){ printf("Are you kidding me? @\\/@\n"); continue; } if(eye1 <1 || eye1 > eye_count || eye2 < 1 || eye2 > eye_count){ printf("Are you kidding me? @\\/@\n"); continue; } if(month1 < 1 || month1 > month_count){ printf("Are you kidding me? @\\/@\n"); continue; } printf("%s(%s%s%s)%s\n", hand[hand1 - 1], eye[eye1 - 1], month[month1 - 1], eye[eye2 - 1], hand[hand2 - 1]); } return 0; } void read_expression(char array[][MAX], int* count){ int i, j, flag; char temp; i = 0; j = 0; flag = 0; 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; } #include <stdio.h> #define MAX 5 #define MAX_CH 10 void read_expression(char array[][MAX], int* count); int main(int argc, const char * argv[]) { char hand[MAX_CH][MAX], eye[MAX_CH][MAX], month[MAX_CH][MAX]; int k, hand1, eye1, month1, eye2, hand2; int i, hand_count = 0, eye_count = 0, month_count = 0; read_expression(hand, &hand_count); read_expression(eye, &eye_count); read_expression(month, &month_count); scanf("%d", &k); for( i = 0; i < k; i++){ scanf("%d %d %d %d %d", &hand1, &eye1, &month1, &eye2, &hand2); if(hand1 <1 || hand1 > hand_count || hand2 < 1 || hand2 > hand_count){ printf("Are you kidding me? @\\/@\n"); continue; } if(eye1 <1 || eye1 > eye_count || eye2 < 1 || eye2 > eye_count){ printf("Are you kidding me? @\\/@\n"); continue; } if(month1 < 1 || month1 > month_count){ printf("Are you kidding me? @\\/@\n"); continue; } printf("%s(%s%s%s)%s\n", hand[hand1 - 1], eye[eye1 - 1], month[month1 - 1], eye[eye2 - 1], hand[hand2 - 1]); } return 0; } void read_expression(char array[][MAX], int* count){ int i, j, flag; char temp; i = 0; j = 0; flag = 0; 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; }
/*************************************************************************> File Name: 1052_1.c> Author: YueBo> Mail: yuebowhu@163.com> Created Time: Tue 20 Jun 2017 08:42:52 PM CST ************************************************************************/#include <stdio.h>#include <stdlib.h>void read_expression(char array[][16], int* count){ char ch; int i = 0; int j = 0; while((ch = getchar()) != '\n'){ if(ch == '['){ i++; j = 0; } else if( ch == ']'){ array[i-1][j] = '\0'; j = 0; } else{ array[i-1][j] = ch; j++; } } *count = i; } int GetExpression(char arr[][16]){ char ch = 0; int cnt = 0; int loopi = 0; while ((ch = getchar()) != '\n') { if (ch == '[') { cnt++; loopi = 0; continue; } else if (ch == ']') { arr[cnt-1][loopi] = '\0'; loopi = 0; } else { arr[cnt-1][loopi] = ch; loopi++; } } return cnt;}int main(){ char hands[16][16]; char eyes[16][16]; char mouse[16][16]; int cnt; int loopi;// cnt = GetExpression(hands); read_expression(hands, &cnt); for (loopi = 0; loopi < cnt; loopi++) { int i = 0; while (hands[loopi][i] != '\0') { printf("%c", hands[loopi][i]); i++; } } printf("\n"); return 0;}
阅读全文
0 0
- 1052. 卖个萌 (20)
- 1052. 卖个萌 (20)
- 1052. 卖个萌 (20)
- 1052. 卖个萌 (20)
- 1052. 卖个萌 (20)
- 1052. 卖个萌 (20)
- 1052. 卖个萌 (20)
- 1052. 卖个萌 (20)
- 1052. 卖个萌 (20)
- 1052. 卖个萌 (20)
- 1052. 卖个萌 (20)
- 1052. 卖个萌 (20)
- 1052. 卖个萌 (20)
- 1052. 卖个萌 (20)
- 1052. 卖个萌 (20)
- 1052. 卖个萌 (20)
- 【PAT】1052. 卖个萌 (20)
- 1052. 卖个萌 (20) PAT
- spring集成rabbitMq(基于topic和fanout模式)
- CSS3用过哪些新特性
- UNIX网络编程2:套接字编程简介
- 码农从菜鸟到大牛的必须文章
- 如何使用github上传项目
- 1052. 卖个萌 (20)
- 数据挖掘中分类指标AUC
- 最简单的聊天室界面编程
- GO struct 小结
- Spring(五)spring整合jdbc
- Docker Toolbox 使用小技巧-复制粘贴-批量处理-循环语句-dm别名
- linux 扩展swap分区大小
- Android框架之Camera(3)透过Camera服务看Binder进程间通信
- PHP四种基础排序算法--冒泡,直接插入,快速和选择排序