当前位置: 首页 > article >正文

【数据结构 | PTA】懂蛇语

懂蛇语

在《一年一度喜剧大赛》第二季中有一部作品叫《警察和我之蛇我其谁》,其中“毒蛇帮”内部用了一种加密语言,称为“蛇语”。蛇语的规则是,在说一句话 A 时,首先提取 A 的每个字的首字母,然后把整句话替换为另一句话 B,B 中每个字的首字母与 A 中提取出的字母依次相同。例如二当家说“九点下班哈”,对应首字母缩写是 JDXBH,他们解释为实际想说的是“京东新百货”……
本题就请你写一个蛇语的自动翻译工具,将输入的蛇语转换为实际要表达的句子。

输入格式:
输入第一行给出一个正整数 N(≤10的5次方),为蛇语词典中句子的个数。随后 N 行,每行用汉语拼音给出一句话。每句话由小写英文字母和空格组成,每个字的拼音由不超过 6 个小写英文字母组成,两个字的拼音之间用空格分隔。题目保证每句话总长度不超过 50 个字符,用回车结尾。注意:回车不算句中字符。

随后在一行中给出一个正整数 M(≤10的3次方),为查询次数。后面跟 M 行,每行用汉语拼音给出需要查询的一句话,格式同上。

输出格式:
对每一句查询,在一行中输出其对应的句子。如果句子不唯一,则按整句的字母序输出,句子间用 | 分隔。如果查不到,则将输入的句子原样输出。

注意:输出句子时,必须保持句中所有字符不变,包括空格。

输入样例:

8
yong yuan de shen
yong yuan de she
jing dong xin bai huo
she yu wo ye hui shuo yi dian dian
liang wei bu yao chong dong
yi  dian dian
ni hui shuo she yu a
yong yuan de sha
7
jiu dian xia ban ha
shao ye wu ya he shui you dian duo
liu wan bu yao ci dao
ni hai shi su yan a
yao diao deng
sha ye ting bu jian
y y d s

输出样例:

jing dong xin bai huo
she yu wo ye hui shuo yi dian dian
liang wei bu yao chong dong
ni hui shuo she yu a
yi  dian dian
sha ye ting bu jian
yong yuan de sha|yong yuan de she|yong yuan de shen

#include<bits/stdc++.h>
#include<iostream>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<sstream>
using namespace std;
map<vector<char>,multiset<string>> ma;
int main()
{
    int N;
    cin>>N;
    getchar();
    for(int i=0;i<N;i++)
    {
        vector<char> v;
        string str,str1;
        getline(cin,str);
        str1=str;
        stringstream s(str);
        while(s>>str)
        {
            char c=str[0];
            v.push_back(c);
        }
        ma[v].insert(str1);
    }
    int k;
    cin>>k;
    getchar();
    for(int i=0;i<k;i++)
    {
        vector<char> v;
        string str,str1;
        getline(cin,str);
        str1=str;
        stringstream s(str);
        while(s>>str)
        {
            char c=str[0];
            v.push_back(c);
        }
        if(ma.find(v)==ma.end())
            cout<<str1<<endl;
        else
        {
            bool pl=false;
            for(auto it:ma[v])
            {
                if(pl) cout<<'|';
                cout<<it;
                pl=true;
            }
            cout<<endl;
        }
    }
    return 0;
}

http://www.kler.cn/a/371603.html

相关文章:

  • 【水下生物数据集】 水下生物识别 深度学习 目标检测 机器视觉 yolo(含数据集)
  • Linux高阶——1026—验证内存映射mmap函数使用
  • 免费可离线的AI抠图工具(鲜艺AI抠图 )免费下载
  • HTML--浮动布局练习
  • 基于SSM的心理咨询管理管理系统(含源码+sql+视频导入教程+文档+PPT)
  • 倪师学习笔记-天纪-易经八卦
  • [ARM-2D 专题]5 MDK编译器一个旧版本-Ofast优化bug的问题及解决办法
  • 网页上视频没有提供下载权限怎么办?
  • 06回归与相关
  • 通过cv库智能切片 把不同的分镜切出来 自媒体抖音快手混剪
  • 基于C语言实现的UDP服务器
  • Spring Boot 经典九设计模式全览
  • Linux 命令行参数 环境变量
  • 自己动手给ESP8285 / ESP8266 1MB 编译新版AT 固件
  • 第二代支付系统报文交换标准【大额支付系统分册】(版本1.5.6)
  • 【笔记】复数基础复数相乘的物理意义:旋转+缩放
  • synchronized基本用法、原理?
  • 论文阅读 - Pre-trained Online Contrastive Learning for Insurance Fraud Detection
  • es实现自动补全
  • k8s_Pod健康检查
  • Mamba应用领域
  • 【C++】踏上C++学习之旅(四):细说“内联函数“的那些事
  • 如何实现PHP的安全最大化
  • ETF申购赎回指南:详解注意事项与低费率券商推荐!
  • 双十一我都入手了啥大件?这几款超值好物分享给你
  • c++习题36-奇数单增序列