PAT 乙级 1052 卖个萌

pat 乙级 1052. 卖个萌 (20) 第一次提交 :12 分 发生两次段错误: 发现原来是我 忽略了 表情数组的长度要大于0 ,如果小于0 直接输出 Are you kidding me ? 代码实现:  #include #include using namespace std; int get (string hand,string a[]){//用于把 阅读详情

1052 卖个萌(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? @\/@

具体页面跳转
PAT乙级1052卖个萌

下面提供用C++的stl vector写的代码片:
主要的方法是vector中的push_back方法,substr方法

//string中的substr()用法: 复制子字符串,要求从指定位置开始,并具有指定的长度。如果没有指定长度_Count或_Count+_Off超出了源字符串的长度,则子字符串将延续到源字符串的结尾

#include <vector>
#include <iostream>
using namespace std;
vector <vector<string> > v;
//vector C++编写方法
int main()
{
    for (int i=0;i<3;i++)
    {
        string s;
        getline(cin,s);
        vector <string> row;
        int j=0,k=0;
        for(;j<s.length();j++)
        {
            if(s[j]=='[')
            {
                while(k++<s.length())
                {
                    if(s[k]==']')
                    {
                        row.push_back(s.substr(j+1,k-j-1));
                        break;
                    }
                }
            }
        }
        v.push_back(row);
    }

    int N;
    cin>>N;
    for(int i=N;i>0;i--)
    {
        int hand_l,eye_l,mouth,eye_r,hand_r;
        cin >>hand_l>>eye_l>>mouth>>eye_r>>hand_r;
        if(hand_l>v[0].size()||eye_l>v[1].size()||mouth>v[2].size()||eye_r>v[1].size()||hand_r>v[0].size()||hand_l<1||eye_l<1||mouth<1||eye_r<1||hand_r<1)
        {
            cout << "Are you kidding me? @\\/@"<< endl;
        }
        else
        {
            cout << v[0][hand_l-1] << "(" << v[1][eye_l-1]  << v[2][mouth-1] << v[1][eye_r-1] << ")" <<v[0][hand_r-1]<< endl;
        }
    }
}

下面提供正常的C++/C语言数组解法:

#include <stdio.h>
#include <iostream>
using namespace std;

int get_vector(string hand,string a[])
{
    //用于把初始三个字符串转换成不含[]的三个string数组
    int k=0;
    for(int i=0;i<hand.size();i++)
    {
        if(hand[i]!='[' && hand[i]!=' ' && hand[i]!=']')
        {
            a[k]+=hand[i];
        }
        else if(hand[i]==']')
        {
            k++;
        }
        else ;
    }
    return k;
}

void get_Paint(string a[],string b[],string c[],int len1,int len2,int len3,int v[])
{
    bool flag=false;
    if(v[0]<=len1 && v[0]>0)
    {
        flag = true;
    }
    else {
        flag = false;
        cout<<"Are you kidding me? @\\/@"<<endl;
        return ;
    }
    if(v[1]<=len2&&v[1]>0)
            flag=true;
    else {
        flag=false;
        cout<<"Are you kidding me? @\\/@"<<endl;
        return;
    }
    if(v[2]<=len3&&v[2]>0)
            flag=true;
    else {
        flag=false;
        cout<<"Are you kidding me? @\\/@"<<endl;
        return;
    }
    if(v[3]<=len2&&v[3]>0)
            flag=true;
    else {
        flag=false;
        cout<<"Are you kidding me? @\\/@"<<endl;
        return;
    }
    if(v[4]<=len1&&v[4]>0)
            flag=true;
    else {
        flag=false;
        cout<<"Are you kidding me? @\\/@"<<endl;
        return;
    }
    if(flag)
    {
        cout<<a[v[0]-1]<<"(";
        cout<<b[v[1]-1];
        cout<<c[v[2]-1];
        cout<<b[v[3]-1]<<")";
        cout<<a[v[4]-1]<<endl;
    }
}

int main(){
    string hand,eye,mouth;
    string a[11],b[11],c[11];
    int K,select[5];
    getline(cin,hand);
    getline(cin,eye);
    getline(cin,mouth);
    cin>>K;
    int len1=get_vector(hand,a);
    int len2=get_vector(eye,b);
    int len3=get_vector(mouth,c);

    for(int i=0;i<K;i++){
        for(int j=0;j<5;j++){
            cin>>select[j];
        }
        get_Paint(a,b,c,len1,len2,len3,select);//每五个数画一次表情
    }
    return 0;
}
PAT乙级-1052. 卖个萌 (20)-详解+代码 题目:PAT乙级-1052. 卖个萌 (20)萌萌哒表情符号通常由“手”、“眼”、“口”三个主要部分组成。简单起见,我们假设一个表情符号是按下列格式输出的:[左手]([左眼][口][右眼])[右手] 现给出可选用的符号集合,请你按用户的要求输出表情。输入格式:输入首先在前三行顺序对应给出手、眼、口的可选符号集。每个符号括在一对方括号[]内。题目保证每个集合都至少有一个符号,并不超过10个符号;每个... 阅读详情

相关推荐

AI+AB测试提升电商主图点击率实战指南

在电商运营中,主图点击率(CTR)是衡量商品吸引力的核心指标,直接影响转化率和订单增长。通过AI技术批量生成高质量主图素材,结合数据驱动的AB测试方法,可以显著提升点击率。AI工具如MidJourney和Stable Diffusion能够快速生成多样化视觉方案,而自动化处理流水线则确保素材规格统一。AB测试体系通过多维变量控制和流量分配策略,科学验证不同素材效果。这种方法特别适用于需要快速迭代的电商场景,某女装店铺案例显示CTR从1.2%提升至3.8%,验证了AI+数据协同优化的技术价值。

weixin_29058331的博客 298

【JAVA】PAT 乙级 1052 卖个萌(未通过测试点0、1)

【JAVA】PAT 乙级 1052 卖个萌(未通过测试点0、1)**Are you kidding me? @\\/@**大家如果有能使用JAVA通过的想法,欢迎评论留言讨论 题目链接 萌萌哒表情符号通常由“手”、“眼”、“口”三个主要部分组成。简单起见,我们假设一个表情符号是按下列格式输出的: 左手[右手] 现给出可选用的符号集合,请你按用户的要求输出表情。 输入格式: 输入首先在前三行顺序对应...

TAL_DARIM的博客 468

软件测试——白盒测试实验报告,输入年月日算星期几

软件测试——白盒测试实验报告,输入年月日算星期几,测试用例设计和结果展示

weixin_52278161的博客 2746

PAT乙级1052 卖个萌 (20 分)测试点123

https://pintia.cn/problem-sets/994805260223102976/problems/994805273883951104 测试点0:Are you kidding me? @/@中“\”为转义字符 要用双\表示 测试点1:最后一个表情是下界溢出 测试点2:中间有表情下界溢出 #include <iostream> using namespace std...

weixin_43333890的博客 571

[HCTF 2018]WarmUp 1学习记录

#[HCTF 2018]WarmUp 1学习笔记 最近做了做ctf,觉得真的很有趣,后悔当初没早点做,不过之前的学习也让我得到了不少经验基础,废话不多说,这次ctf虽然基本上靠了网上的大佬们(因为比较菜),但自己也做了些思考,应该对新手也比较友好吧。 ##1 首先怎么找源码,我承认我确实刚开始不知道在哪找,不过也很快找到了,相信也会有部分新手和我差不多吧 然后下面控制台会有个temp0,然后直接回车 后面我就受到启发,直接在链接后面加上source.php,进行页面跳转,然后就可以开始PHP代码审计了。

weixin_45869407的博客 684

CMN-700组件全解析:从XP路由器到HN-F主节点的实战配置指南

本文深入解析Arm CMN-700片上网络IP的核心组件与实战配置。重点剖析了XP网格路由器的拓扑规划与CHI通道管理,以及HN-F全一致性主节点在维护缓存一致性、管理SLC和地址映射中的关键作用。通过一个12×12网格的配置案例,为硬件工程师提供了从组件布局、地址映射到性能调优的系统级设计指南。

weixin_29313423的博客 282

PAT乙级 1052 卖个萌

题目: 输入样例: [╮][╭][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? @\/...

chongchujianghu3的博客 270

Winform从入门到精通(21)——ProgressBar(史上最全)

本介绍ProgressBar控件的详细用法,包含所有属性、事件,绝对史上最全!

qq_34059233的博客 3350

PAT乙级_1052 卖个萌_Python_AC解法_含疑难点

本文介绍了PAT乙级1052题"卖个萌"的Python解法。该题要求根据用户选择的序号组合表情符号。关键点包括:1)使用sys模块以bytes类型处理特殊字符的输入输出;2)通过自定义函数解析方括号内的表情符号;3)严格检查用户输入的序号是否有效。作者特别指出了本地测试与在线提交的差异,强调了使用bytes类型和正确处理转义字符的重要性。解法虽能AC但可能存在优化空间,代码风格偏个人化。文章还总结了遇到问题的解决过程,包括输入输出格式转换和边界条件处理。

CongQianS1的博客 637

FFmpeg + Qt 实现摄像头采集与 MP3 背景音乐 RTSP 推流

在直播或视频监控场景中,我们经常需要将摄像头画面与背景音乐混合后推送到 RTSP 服务器。本文将详细介绍如何使用Qt框架结合摄像头实时采集(Windows 下使用dshow,Linux 使用v4l2视频预览(显示为 QImage)视频 H.264 编码 + RTSP 推流从 MP3 文件读取音频,重采样为 AAC 编码并推流循环播放音频文件解决中文文件路径打开失败的问题文章将剖析每个技术环节的关键代码,并给出完整的类实现。

weixin_45397344的博客 504

论文研读 Corundum: An Open-Source 100-Gbps NIC

Corundum 通过在 FPGA 上构建并行 pipeline、高效 DMA 通道、无阻塞队列结构、低延迟调度器,实现了在 PCIe Gen3 x16 接口上稳定跑满 100Gbps 吞吐量。

Double Galaxy 489

PAT乙级 1052 卖个萌 (0/20 分) Java 未实现

PAT乙级 1052 卖个萌 (0/20 分) Java 未实现

A1sakaTaiga的博客 435

裂缝二维检测:裂缝的长度和宽度检测

这一节,我们需要去整合一下前面的代码,在进行长度和宽度的测量时,需要裂缝的类型、个数、面积的帮助。这一章是本专栏的核心部分。以上代码我均试过,由于本人能力有限,看不懂代码,最终还是没有采用,使用的是最普通检测宽度的方法,即求得骨架总长度后,用总面积求取平均宽度。

m0_62919535的博客 4241

【PAT乙级 1052】卖个萌 C++

萌萌哒表情符号通常由“手”、“眼”、“口”三个主要部分组成。现给出可选用的符号集合,请你按用户的要求输出表情。

m0_65154047的博客 213

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

PAT乙级 1052 卖个萌 正则表达式

萌萌哒表情符号通常由“手”、“眼”、“口”三个主要部分组成。现给出可选用的符号集合,请你按用户的要求输出表情。

polarours的博客 367

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

PAT 乙级 1052  卖个萌

1052 卖个萌 (20 point(s)) 萌萌哒表情符号通常由“手”、“眼”、“口”三个主要部分组成。简单起见,我们假设一个表情符号是按下列格式输出的: [左手]([左眼][口][右眼])[右手] 现给出可选用的符号集合,请你按用户的要求输出表情。 输入格式: 输入首先在前三行顺序对应给出手、眼、口的可选符号集。每个符号括在一对方括号 []内。题目保证每个集合都至少有一个符号,并...

漫浸天空的雨色的备忘录~ 1158

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

PAT乙级 1052. 卖个萌

//写这题的时候真的是懒得动脑子了... //PAT-1-1052 #include #include #include #include using namespace std; void read_icon(string e[],string s0,int &cc){ for (int i=0; i<s0.length(); i++) { if (s0[i]=

Ken的博客 537

PAT 乙级练习 1052 卖个萌

PAT 乙级练习 题解合集 本题链接 题目 萌萌哒表情符号通常由“手”、“眼”、“口”三个主要部分组成。简单起见,我们假设一个表情符号是按下列格式输出的: [左手]([左眼][口][右眼])[右手] 现给出可选用的符号集合,请你按用户的要求输出表情。 输入格式: 输入首先在前三行顺序对应给出手、眼、口的可选符号集。每个符号括在一对方括号 []内。题目保证每个集合都至少有一个符号,并不超过 10 ...

Gorgeoustray 306

【PAT乙级】1052 卖个萌

题目链接:1052卖个萌 思路 getline输入三行,另写一个函数用于添加串内符号,判断至第n'['出现,将后续内容加入输出,直到']'结束加入。 注意错误输出中的'\'为转义符,无法单独输出,需改为"\\"。 代码 #include <iostream> #include <math.h> using namespace std; //输入选串及序号,将对应字符加入输出,成功返回1,失败返回0 int Select(string &out,string ..

五百零一 840

PAT乙级1052卖个萌:字符串解析与数组映射实战详解

字符串处理是编程中的基础核心技能,其核心原理在于对字符序列的遍历、分割与重组。在数据处理、配置文件解析等应用场景中,常需从特定格式(如方括号包裹)的文本中提取有效信息,这体现了数据清洗与结构化转换的技术价值。数组映射则通过索引将逻辑编号快速关联到存储元素,是实现高效查询的关键。本文以一道趣味编程题为例,深入剖析如何利用**字符串解析**技术构建表情库,并运用**数组映射**处理用户查询,涵盖输入验证、边界处理等工程实践要点,为处理非标准格式数据提供了清晰的解决范式。

weixin_42524824的博客 271

PAT 1052 卖个萌 (20分) C++实现

1052 卖个萌 (20分) 萌萌哒表情符号通常由“手”、“眼”、“口”三个主要部分组成。简单起见,我们假设一个表情符号是按下列格式输出的:[左手] ( [左眼] [口] [右眼] ) [右手] 现给出可选用的符号集合,请你按用户的要求输出表情。 输入格式: 输入首先在前三行顺序对应给出手、眼、口的可选符号集。每个符号括在一对方括号 []内。题目保证每个集合都至少有一个符号,并不超过 10 个符号...

ganlanA的博客 426

PAT 乙级 1052 卖个萌 (20分)

我的个人网站Cheese的个人主页http://www.cheese.ren/ 博客来源PAT 乙级 1052 卖个萌-Cheese的个人博客PAT 乙级 1052 卖个萌http://blog.cheese.ren/72 欢迎交换友链 :-) #include<bits/stdc++.h> usingnamespacestd; intmain(){ stringc[3][10],s; intc_num[3]={0},left,n,tem...

起司Cheese的博客 250

PAT 乙级 1052 卖个萌

萌萌哒表情符号通常由“手”、“眼”、“口”三个主要部分组成。简单起见,我们假设一个表情符号是按下列格式输出的: [左手]([左眼][口][右眼])[右手] 现给出可选用的符号集合,请你按用户的要求输出表情。 输入格式: 输入首先在前三行顺序对应给出手、眼、口的可选符号集。每个符号括在一对方括号 []内。题目保证每个集合都至少有一个符号,并不超过 10 个符号;每个符号包含 1 到 4 ...

qq_38846633的博客 255

PAT乙级1052. 卖个萌(C语言)

PAT乙级真题题解目录 /** * 1. 读取符号 * - getchar() != '\n'; * - 正则表达式 "%[^]]" 读取符号; * - 统计符号集的长度; * 2. 颜文字 实际大小可能不止一个字符 * 3. 颜文字在命令行窗口存在无法显示的情况,需要提交答案才能真正判断正确性; */ #include &lt;std...

对方北方 1063

PAT乙级1052 卖个萌 (20 分)

https://pintia.cn/problem-sets/994805260223102976/problems/994805273883951104 1052 卖个萌 (20 分) 分析:一眼看去是水题,实际上是大坑题。用户选择有负数,cin空格会卡你。中文字符烦死人,转义字符要注意。眼高手低要不得,全部AC才可以。 #include <iostream> #include<bits/stdc++.h> using namespace std; vector<strin

tongjingqi_的博客 658
上一篇: VSCODE使用整理
下一篇: CCF 20180916 考试题目(暂无解答
鱼忘机
博客等级 码龄10年 50粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值