PAT(B) 1052 卖个萌(Java:0分 待解决,C:20分)
题目描述
萌萌哒表情符号通常由“手”、“眼”、“口”三个主要部分组成。简单起见,我们假设一个表情符号是按下列格式输出的:
[左手]([左眼][口][右眼])[右手]
现给出可选用的符号集合,请你按用户的要求输出表情。
输入格式
输入首先在前三行顺序对应给出手、眼、口的可选符号集。每个符号括在一对方括号 []内。题目保证每个集合都至少有一个符号,并不超过 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? @\/@
Java代码(0分)
样例能正确输出,提交0分,搞不懂为什么。希望来个大佬提示一下。
/**********************************************************************************
Submit Time			Status	Score	Problem	Compiler		Run Time	User
8/9/2019, 13:43:59	WA		0		1052	Java (openjdk)	88 ms		wowpH
**********************************************************************************/
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
	private static List<String> getSymbolSet(String input) {// 获取符号集
		String regex = "\\[(.*?)]";				// 正则表达式,匹配方括号之间的字符串
		Pattern pattern = Pattern.compile(regex);
		List<String> list = new ArrayList<String>(10);
		Matcher matcher = pattern.matcher(input);
		while (matcher.find()) {
			list.add(matcher.group(1));					// 找到就添加到list中
		}
		return list;
	}
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		List<String> hand = getSymbolSet(br.readLine());	// 手符号集
		List<String> eye = getSymbolSet(br.readLine());		// 眼符号集
		List<String> mouth = getSymbolSet(br.readLine());	// 口符号集
		int a = hand.size(), b = eye.size(), c = mouth.size();
		int[] number = { a, b, c, b, a };				// 每个位置的最大符号个数
		int k = Integer.parseInt(br.readLine());		// 用户数
		for (int i = 0; i < k; ++i) {
			char[] emoji = br.readLine().replaceAll(" ", "").toCharArray();// 表情
			boolean legalFlag = true;					// 默认未越界
			for (int j = 0; j < 5 && legalFlag; ++j) {
				int num = emoji[j] - 48;				// 序号
				if (num < 1 || num > number[j]) {		// 判断是否越界
					legalFlag = false;					// 越界
				}
			}
			if (legalFlag) {							// 合法,输出表情
				System.out.print(hand.get(emoji[0] - 48 - 1));
				System.out.print("(");
				System.out.print(eye.get(emoji[1] - 48 - 1));
				System.out.print(mouth.get(emoji[2] - 48 - 1));
				System.out.print(eye.get(emoji[3] - 48 - 1));
				System.out.print(")");
				System.out.println(hand.get(emoji[4] - 48 - 1));
			} else {									// 不合法
				System.out.println("Are you kidding me? @\\/@");
			}
		}
	}
}
Java提交结果

Java运行结果

C代码
/**********************************************************************************
Submit Time			Status		Score	Problem	Compiler	Run Time	User
8/9/2019, 19:20:27	Accepted	20		1052	C (gcc)		2 ms		wowpH
**********************************************************************************/
#include<stdio.h>
int getSymbolSet(char symbol[11][5]) {				// 获取符号集
	char ch, i = 1, j;								// i表示符号个数,j表示字符个数
	while ((ch = getchar()) != '\n') {
		if ('[' == ch) {
			j = 0;									// 第i个符号0个字符
			while ((ch = getchar()) != ']') {
				if ('\n' == ch) {					// 换行符
					return (i - 1);					// 直接返回符号个数
				}
				symbol[i][j++] = ch;				// 保存字符后,字符个数加1
			}
			symbol[i++][j] = '\0';					// 结束符,符号个数加1
		}
	}
	return i - 1;									// 符号个数
}
int main() {
	char hand[11][5], eye[11][5], mouth[11][5];		// 手,眼,口字符集,下标从1开始
	int nHand = getSymbolSet(hand);					// 获取手字符集,返回手符号个数
	int nEye = getSymbolSet(eye);					// 获取眼字符集,返回眼符号个数
	int nMouth = getSymbolSet(mouth);				// 获取口字符集,返回口符号个数
	int k, e1, e2, e3, e4, e5;						// 用户数,表情
	scanf("%d", &k);
	for (int i = 0; i < k; ++i) {
		scanf("%d %d %d %d %d", &e1, &e2, &e3, &e4, &e5);		// 输入表情
		if (e1 < 1 || e2 < 1 || e3 < 1 || e4 < 1 || e5 < 1) {	// 是否越下界
			printf("Are you kidding me? @\\/@\n");
		} else if (e1 > nHand || e2 > nEye || e3 > nMouth || e4 > nEye || e5 > nHand) {
			printf("Are you kidding me? @\\/@\n");	// 是否越上界
		} else {									// 未越界,输出表情
			printf("%s(%s%s%s)%s\n", hand[e1], eye[e2], mouth[e3], eye[e4], hand[e5]);
		}
	}
	return 0;
}
PAT(B) 1052 卖个萌(Java:0分 待解决,C:20分)的更多相关文章
- PAT Basic 1052 卖个萌 (20 分)
		萌萌哒表情符号通常由“手”.“眼”.“口”三个主要部分组成.简单起见,我们假设一个表情符号是按下列格式输出的: [左手]([左眼][口][右眼])[右手] 现给出可选用的符号集合,请你按用户的要求输出 ... 
- PAT 1052 卖个萌 (20)(代码+思路)
		1052 卖个萌 (20)(20 分) 萌萌哒表情符号通常由"手"."眼"."口"三个主要部分组成.简单起见,我们假设一个表情符号是按下列格 ... 
- PAT-乙级-1052. 卖个萌 (20)
		1052. 卖个萌 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 萌萌哒表情符号通常由“手”.“眼”. ... 
- PAT——1052. 卖个萌
		萌萌哒表情符号通常由“手”.“眼”.“口”三个主要部分组成.简单起见,我们假设一个表情符号是按下列格式输出的: [左手]([左眼][口][右眼])[右手] 现给出可选用的符号集合,请你按用户的要求输出 ... 
- PAT 1052 卖个萌
		https://pintia.cn/problem-sets/994805260223102976/problems/994805273883951104 萌萌哒表情符号通常由“手”.“眼”.“口”三 ... 
- PAT 1052. 卖个萌 (20)
		萌萌哒表情符号通常由“手”.“眼”.“口”三个主要部分组成.简单起见,我们假设一个表情符号是按下列格式输出的: [左手]([左眼][口][右眼])[右手] 现给出可选用的符号集合,请你按用户的要求输出 ... 
- 【PAT】B1052 卖个萌(20 分)
		实在不想写这个题,好费劲,头疼,这是粘的柳婼的代码 ,等我有空再自己用c写吧 #include <iostream> #include <vector> using names ... 
- 1052 卖个萌 (20 分)C语言
		萌萌哒表情符号通常由"手"."眼"."口"三个主要部分组成.简单起见,我们假设一个表情符号是按下列格式输出的: [左手]([左眼][口][右 ... 
- PAT Basic 1014 福尔摩斯的约会 (20 分) Advanced 1061 Dating (20 分)
		大侦探福尔摩斯接到一张奇怪的字条:我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm.大侦探很快就明白了,字条上奇 ... 
随机推荐
- Python操作MySQL数据库(步骤教程)
			我们经常需要将大量数据保存起来以备后续使用,数据库是一个很好的解决方案.在众多数据库中,MySQL数据库算是入门比较简单.语法比较简单,同时也比较实用的一个.在这篇博客中,将以MySQL数据库为例,介 ... 
- 深度学习面试题13:AlexNet(1000类图像分类)
			目录 网络结构 两大创新点 参考资料 第一个典型的CNN是LeNet5网络结构,但是第一个引起大家注意的网络却是AlexNet,Alex Krizhevsky其实是Hinton的学生,这个团队领导者是 ... 
- Flutter --------  Http库实现网络请求
			第三方库 http实现网络请求,包含get,post http库文档:https://pub.dev/packages/http 1.添加依赖 dependencies: http: ^0.12.0 ... 
- centos下如何开放某个端口?
			命令如下: firewall-cmd --permanent --add-port=/tcp (开放22端口) firewall-cmd --reload 
- windows nginx 快捷启动关闭批处理脚本
			:: 关闭回显,即执行本脚本时不显示执行路径和命令,直接显示结果 @echo off rem @author luwuer color f8 set NGINX_DIR=D:\nginx-1.12.2 ... 
- Microsoft VBScript 运行时错误 错误 800a005e 无效使用 Null: Replace
			查看数据库 表的字段里面是否有空的字段. where 字段名 is null 
- 003-guava 集合-不可变集合
			一.概述 二.使用 2.1.不可变集合 1.为什么使用不可变集合 不可变对象有很多优点,包括: 当对象被不可信的库调用时,不可变形式是安全的:不可变对象被多个线程调用时,不存在竞态条件问题不可变集合不 ... 
- Apache Flink 开发环境搭建和应用的配置、部署及运行
			https://mp.weixin.qq.com/s/noD2Jv6m-somEMtjWTJh3w 本文是根据 Apache Flink 系列直播课程整理而成,由阿里巴巴高级开发工程师沙晟阳分享,主要 ... 
- Swift编码总结1
			1. fileprivate (set) var hasSetDiscount = false中fileprivate (set)表示什么意思: //设置setter私有,但是getter为publi ... 
- Swift4.0复习函数
			1.函数的定义与调用: 一个函数定义的基本语法如以下代码所示: func function_name (param1: Int, param2: Float, param3: Double) -> ... 
