zoukankan      html  css  js  c++  java
  • 1052 卖个萌 (20 分)

    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? @/@
    注意
      题目中说序号是从1开始,所以判断的时候不能仅仅判断上界还要判断下界如果序号小于1,肯定非法呀。
    测试点二就是测试这个的。这个题目我的主要思路是使用map,首先对输入的符号进行切分,“对号入座”,
    后面只需要取出来输出就可以了。当然使用vector<vector<string>>会简单很多,因为可以使用循环,
    也不需要像我这样再定义一个函数去处理。
    #include <iostream>
    #include <cmath>
    #include<algorithm>
    #include<map>
    using namespace std;
    
    void handle(string &str,map<int,string>&mp)
    {
        int cnt=1;
        for(int i=0;i<str.size();)
        {
            string temp="";
            if(str[i]=='[')
            {
                i++;
                while(str[i]!=']')
                {
                    temp+=str[i];
                   // cout<<str[i]<<endl;
                    i++;
                }
                mp[cnt]=temp;
                cnt++;
                i++;
            }
            else
                i++;
        }
    }
    
    
    
    int main()
    {
        string hand,eye,month;
        getline(cin,hand);
        getline(cin,eye);
        getline(cin,month);
        int k;
        cin>>k;
        map<int,string>m_hand,m_eye,m_month;
        handle(hand,m_hand);
        handle(eye,m_eye);
        handle(month,m_month);
        for(int i=0;i<k;i++)
        {
            string res="";
            int lh,le,m,re,rh;
            cin>>lh>>le>>m>>re>>rh;
            if(lh>m_hand.size()||re>m_eye.size()||rh>m_hand.size()
               ||le>m_eye.size()||m>m_month.size()||lh<1||le<1||m<1
               ||re<1||rh<1)
            {
                cout<<"Are you kidding me? @\/@
    ";
                continue;
            }
            cout<<m_hand[lh]+"("+m_eye[le]+m_month[m]+m_eye[re]+")"+m_hand[rh]<<endl;
        }
        return 0;
    }
     
  • 相关阅读:
    Java实现 蓝桥杯VIP 算法训练 字符删除
    Java实现 蓝桥杯VIP 算法训练 字符删除
    Java实现 蓝桥杯VIP 算法训练 字符删除
    Java实现 蓝桥杯VIP 算法训练 字符删除
    Java实现 蓝桥杯VIP 算法训练 字符删除
    Java实现 蓝桥杯VIP 算法训练 字符串编辑
    Java实现 蓝桥杯VIP 算法训练 字符串编辑
    Java实现 蓝桥杯VIP 算法训练 字符串编辑
    Java实现 蓝桥杯VIP 算法训练 字符串编辑
    Java实现 蓝桥杯VIP 算法训练 字符串编辑
  • 原文地址:https://www.cnblogs.com/zhanghaijie/p/10411925.html
Copyright © 2011-2022 走看看