本文主要是介绍PAT Basic Level 1052 卖个萌 解题思路及AC代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
PAT 乙级 1052 卖个萌 v0.9
- 1. 题目简述及在线测试位置
- 2. 基本思路
- 3. 完整AC代码
1. 题目简述及在线测试位置
1.1 根据提供的符号打印表情
1.2 在线测试位置: 1052 卖个萌
2. 基本思路
2.0 当前解法比较直白、代码量较大,后面有时间了优化
2.1 问题核心是对原始字符串进行分隔 ,拿到需要的符号并存储。当前解法通过自定义Separate( )函数完成分隔,将方括号中的符号存储到数组中
int Separate(char a[][4])
{ int Count = 1, SubCount = 0; //符号的序号从 1 开始char Symbol;Symbol = getchar(); //[╮][╭][o][~\][/~] [<][>]while(Symbol !='\n'){if (Symbol == '['){Symbol = getchar();while (Symbol != ']'){a[Count][SubCount++] = Symbol;Symbol = getchar();}a[Count][SubCount] = '\0';Count++;SubCount = 0;}Symbol = getchar();}Count--;return Count;
}
2.2 符号存储完毕后,判定后打印输出即可,当输出 \ 时,需要加转义符 \
2.3 在本地编译器调试时, 如下符号无法正常显示输出:╮ ╯ ╰ ╭ ,相同的代码,在线编译器上可以调试通过。目前没弄清楚原因
3. 完整AC代码
#include <iostream>
using namespace std;int Separate(char a[][4]);int main()
{//每个集合都至少有一个符号,并不超过 10 个符号;每个符号包含 1 到 4 个非空字符char hand[11][4], eye[11][4], mouth[11][4];//分别存储 手 眼 嘴 的符号int hCount, eCount, mCount; //分别记录 手 眼 嘴 的符号个数int N, LeftHand, LeftEye, Mouth, RightEye, RightHand;bool flag = true;hCount = Separate(hand);//每个符号括在一对方括号 []内eCount = Separate(eye);mCount = Separate(mouth);cin >> N;while (N--){cin >> LeftHand >> LeftEye >> Mouth >> RightEye >> RightHand;if (LeftHand < 1 || LeftHand > hCount) flag = false;if (LeftEye<1 || LeftEye>eCount)flag = false;if (Mouth<1 || Mouth>mCount)flag = false;if (RightEye<1 || RightEye>eCount)flag = false;if (RightHand<1 || RightHand>hCount)flag = false;if (flag){cout << hand[LeftHand] << "(" << eye[LeftEye] << mouth[Mouth] <<eye[RightEye] << ")" << hand[RightHand] << endl;}else{ //Display '\' need another '\' aHeadcout << "Are you kidding me? @\\/@" << endl; flag = true;}}return 0;
}int Separate(char a[][4])
{ int Count = 1, SubCount = 0; //符号的序号从 1 开始char Symbol;Symbol = getchar(); //[╯][╰][^][-][=][>][<][@][⊙]while(Symbol !='\n') //直到遇到回车换行符 \n{if (Symbol == '['){Symbol = getchar();while (Symbol != ']'){a[Count][SubCount++] = Symbol;Symbol = getchar();}a[Count][SubCount] = '\0';Count++;SubCount = 0;}Symbol = getchar();}Count--;return Count;
}
这篇关于PAT Basic Level 1052 卖个萌 解题思路及AC代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!