1052. 卖个萌 (20)

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(^ε^)o
Are 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;
}









本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/421100.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

原来js的parseInt函数还可以这样用

QQpc端登录账号还可以这样玩&#xff01;&#xff01;&#xff01; 图片上来。 wow&#xff0c;我惊呆了。 居然可以登录进出&#xff1f;&#xff01; 都知道&#xff0c;登录会验证账号是整数&#xff0c;文本框输入的是字符串&#xff0c;会把字符串转成整数&#xff0c; 而…

一步步学习SPD2010--词汇表

association关联&#xff1a;两个ECTs外部内容类型间的关系。 BCS业务连接服务&#xff1a;见Business Connectivity Service(BCS) BDC业务数据连接&#xff1a;见Business Data Connectivity&#xff08;BDC&#xff09; breadcrumb面包屑导航&#xff1a; 一系列链接&#xf…

1035. 插入与归并(25)

1035. 插入与归并(25) 时间限制200 ms内存限制65536 kB代码长度限制8000 B判题程序Standard作者CHEN, Yue根据维基百科的定义&#xff1a; 插入排序是迭代算法&#xff0c;逐一获得输入数据&#xff0c;逐步产生有序的输出序列。每步迭代中&#xff0c;算法从输入序列中取出一元…

自定义泛型集合,接口

自定义泛型集合 package C12_21;public class abstractList {public static void main(String[] args) {stu<String> stus new stu<String>();stus.setS("hello");System.out.println(stus.getS());// 灵活, 可以传入任意数据类型。 将运行错误转变为编…

安装json扩展

json_encode无法使用&#xff0c;要求扩展php>5.2,json>2.1.0 http://syue.com/Software/Web/php/17843.html 改php.ini加extensionjson.so转载于:https://www.cnblogs.com/mucaiweiblog/p/3618599.html

实验1 熟悉实验环境

本操作系统实验的硬件环境是IA-32(x86)架构的PC机&#xff08;就是你现在正在使用的计算机&#xff09;&#xff0c;主要软件环境是Bochs gcc 你最喜欢的编辑器/IDE 你最喜欢的操作系统 Linux 0.11源代码。实验的基本流程是根据实验要求编写应用程序、修改Linux 0.11的源代…

c/s和b/s两种开发模式

CS&#xff08;Client/Server&#xff09;&#xff1a;客户端----服务器结构。 C/S结构在技术上很成熟&#xff0c;它的主要特点是交互性强、具有安全的存取模式、网络通信量低、响应速度快、利于处理大量数据。因为客户端要负责绝大多数的业务逻辑和UI展示&#xff0c;又称为…

前端学习(1032):jquery插件-瀑布流

1网址打开 下载插件 2引入css和js和html 3修改图片

实验2 操作系统的引导

操作系统的引导 实验目的 熟悉hit-oslab实验环境&#xff1b;建立对操作系统引导过程的深入认识&#xff1b;掌握操作系统的基本开发过程&#xff1b;能对操作系统代码进行简单的控制&#xff0c;揭开操作系统的神秘面纱。 实验内容 此次实验的基本内容是&#xff1a; 阅读《…

从Tom说JSP原理

第一次执行&#xff1a; 客户端通过电脑连接服务器&#xff0c;因为是请求是动态的&#xff0c;所以所有的请求交给WEB容器来处理在容器中找到需要执行的*.jsp文件之后*.jsp文件通过转换变为*.java文件.java文件经过编译后&#xff0c;形成.class文件最终服务器要执行形成的*.…

初识SolrJ开发, schema.xml的配置与服务初始化.

schema.xml位于solr/collection1/conf/目录下&#xff0c;是Solr中用户定义字段类型及字段的配置文件. Solr版本: 4.6.0 第一步: Schema.xml说明 实例schema.xml结构同solr/collection1/conf/schema.xml结构一致,具体配置通过注解已注明. <?xml version"1.0" enc…

实验3 编程、编译、链接、跟踪

本章的核心知识点在4.9节&#xff0c;王爽老师讲的特别清楚明白&#xff0c;多读几遍&#xff0c;跟着多做几遍&#xff0c;增加对底层的感觉&#xff1b; 本实验的目的是明白4.9节所讲的东西&#xff0c;具体点如下&#xff1a; 1&#xff0c;command&#xff0c;debug&…

Java动态查询

CODING COMING. // 组合模糊查询 根据年龄 和 姓名 模糊查询 学生。public List<Student> findTwo(int age, String name) {List<Student> list new ArrayList<Student>();StringBuffer sql new StringBuffer("select * from student where 1 1&quo…

前端学习(1033):jquery插件-图片懒加载

1下载插件 2html css和js引入 ctrlh 快速替换 必须最后插入

对自己有用的VS调试技巧

设置下一条语句编辑然后继续符号越界后查看堆对象查看数组的值底部设置下一条语句 返回顶部 一个典型的调试情况就是通过单步跟踪分析为什么一个函数调用失败了。当你发现一个函数调用的另一个函数返回错误的时候你会怎么做&#xff1f;重启调试&#xff1f;有更好的方法。拖动…

前端学习(1034):jquery插件-全屏滚动

fullpage.js 1下载插件 js css html 4引入

实验4 [bx]和loop的使用

(1) assume cs:codesgcodesg segmentmov ax, 0mov ds, axmov bx, 200H ;ds:bx数据区mov cx, 40hmov dl, 0 s: mov ds:[bx], dl ;dl中间变量inc bxinc dlloop smov ax, 4c00h int 21hcodesg ends end实验结果&#xff1a; &#xff08;2&#xff09; 考虑&#xff08;1&#…

面试 jsp转发和重定向

转发 HttpServletRequest 用法 req.getRequestDispatcher("studentServlet").forward(req, resp);重定向 HttpServletResponse 用法 resp.sendRedirect("studentServlet");区别 转发的主导权在服务器,重定向的主导权在客户端 转发可以用request传递数据…