大家有木有看过带谍战剧?里面多数都有发电报的情节吧,有木有感觉滴滴答答地发报特别酷?
发报的那个东西,学名叫做“电键”,如图: 电键.jpg
电键按下去之后,电路接通,就会发出声音,长短不同的声音组合,就形成了不同的编码,可以表示不同的信息~
汉字个数太多,所以汉字的编码是很复杂的。但是英文字母比较少,编码就容易多了
我们今天来研究一种国际通用的电报编码——莫尔斯码。
我们用“滴(Di~)”来模拟电键短按发出的声音,用一个点(dot)表示: .
用“答(Da~)”来模拟电键长按发出的声音,用一个短划(dash)表示: -
英文字母和数字的莫尔斯码是:

A .-
B -...
C -.-.
D -..
E .
F ..-.
G --.
H ....
I ..
J .---
K -.-
L .-..
M --
N -.
O ---
P .--.
Q --.-
R .-.
S ...
T -
U ..-
V ...-
W .--
X -..-
Y -.--
Z --..
0 -----
1 .----
2 ..---
3 ...--
4 ....-
5 .....
6 -....
7 --...
8 ---..
9 ----.
例如求救信号 SOS 的莫尔斯码就是: ... --- ... (每个字母的编码中间空一格)
现在请将输入的编码转成文本、将输入的文本转成编码。

输入格式:

第一行为一个正整数N,
接下来N行,每行为不超过200个字符的文本或者编码。
我们把连续的一串字母或数字的组合称之为一个“单词”,输入的文本格式是:每个单词之间空一格,文本的首末两端没有空格,例如CQ CQ,文本仅有大写字母、数字、空格组成。
输入的编码的格式是:每个单词内的字母编码或数字编码之间空一格,每个单词之间用|分隔,例如 -.-. --.-|-.-. --.- (文本 CQ CQ的编码)
输出格式:

对每一行输入的文本或编码,采用相对应的格式,在一行中对应给出其编码或文本。
输入样例:

2
-.-. --.-|-.-. --.-|-.-. --.-|-… .|-… -… … … .-… .-|-… -… … … .-… .-|-.-
CQ CQ CQ DE BD5HLA BD5HLA K

输出样例:

CQ CQ CQ DE BD5HLA BD5HLA K
-.-. --.-|-.-. --.-|-.-. --.-|-… .|-… -… … … .-… .-|-… -… … … .-… .-|-.-


模拟瞎搞即可

#define debug
#ifdef debug
#include <time.h>
#include "win_majiao.h"
#endif#include <iostream>
#include <algorithm>
#include <vector>
#include <string.h>
#include <map>
#include <set>
#include <stack>
#include <queue>
#include <math.h>#define MAXN ((int)1e5+7)
#define ll long long int
#define INF (0x7f7f7f7f)
#define fori(lef, rig) for(int i=lef; i<=rig; i++)
#define forj(lef, rig) for(int j=lef; j<=rig; j++)
#define fork(lef, rig) for(int k=lef; k<=rig; k++)
#define QAQ (0)using namespace std;
typedef vector<vector<int> > VVI;#define show(x...) \do { \cout << "\033[31;1m " << #x << " -> "; \err(x); \} while (0)void err() { cout << "\033[39;0m" << endl; }
template<typename T, typename... A>
void err(T a, A... x) { cout << a << ' '; err(x...); }namespace FastIO{char print_f[105];void read() {}void print() { putchar('\n'); }template <typename T, typename... T2>inline void read(T &x, T2 &... oth) {x = 0;char ch = getchar();ll f = 1;while (!isdigit(ch)) {if (ch == '-') f *= -1; ch = getchar();}while (isdigit(ch)) {x = x * 10 + ch - 48;ch = getchar();}x *= f;read(oth...);}template <typename T, typename... T2>inline void print(T x, T2... oth) {ll p3=-1;if(x<0) putchar('-'), x=-x;do{print_f[++p3] = x%10 + 48;} while(x/=10);while(p3>=0) putchar(print_f[p3--]);putchar(' ');print(oth...);}
} // namespace FastIO
using FastIO::print;
using FastIO::read;int n, m, Q, K;string buf;map<string, string> mp;void sloveA(string& ans, string& key) { buf.push_back(' ');for(int i=0; buf[i]; i++) {if(buf[i] == ' ' || buf[i] == '|') {ans += mp[key];if(buf[i] == '|') ans.push_back(' ');key = "";} else {key.push_back(buf[i]);}}
}void sloveB(string& ans, string& key) {mp[" "] = "|";int i = 0;for(i=0; buf[i]; i++) {string p = "";p.push_back(buf[i]);// ans += (mp[p] + " ");if(buf[i] == ' ') {ans.pop_back();ans += (mp[p] + "");} else {ans += (mp[p] + " ");}}while(ans.back() == ' ') ans.pop_back(); //吐掉末尾空格
}signed main() {#ifdef debugfreopen("test.txt", "r", stdin);clock_t stime = clock();
#endifmp["A"] = ".-"; mp[".-"] = "A"; mp["B"] = "-..."; mp["-..."] = "B"; mp["C"] = "-.-."; mp["-.-."] = "C"; mp["D"] = "-.."; mp["-.."] = "D"; mp["E"] = "."; mp["."] = "E"; mp["F"] = "..-."; mp["..-."] = "F"; mp["G"] = "--."; mp["--."] = "G"; mp["H"] = "...."; mp["...."] = "H"; mp["I"] = ".."; mp[".."] = "I"; mp["J"] = ".---"; mp[".---"] = "J"; mp["K"] = "-.-"; mp["-.-"] = "K"; mp["L"] = ".-.."; mp[".-.."] = "L"; mp["M"] = "--"; mp["--"] = "M"; mp["N"] = "-."; mp["-."] = "N"; mp["O"] = "---"; mp["---"] = "O"; mp["P"] = ".--."; mp[".--."] = "P"; mp["Q"] = "--.-"; mp["--.-"] = "Q"; mp["R"] = ".-."; mp[".-."] = "R"; mp["S"] = "..."; mp["..."] = "S"; mp["T"] = "-"; mp["-"] = "T"; mp["U"] = "..-"; mp["..-"] = "U"; mp["V"] = "...-"; mp["...-"] = "V"; mp["W"] = ".--"; mp[".--"] = "W"; mp["X"] = "-..-"; mp["-..-"] = "X"; mp["Y"] =
"-.--"; mp["-.--"] = "Y"; mp["Z"] = "--.."; mp["--.."] = "Z"; mp["0"] = "-----"; mp["-----"] = "0"; mp["1"] = ".----"; mp[".----"] = "1"; mp["2"] = "..---"; mp["..---"] = "2"; mp["3"] = "...--"; mp["...--"] = "3"; mp["4"] = "....-"; mp["....-"] = "4"; mp["5"] = "....."; mp["....."] = "5"; mp["6"] = "-...."; mp["-...."] = "6"; mp["7"] = "--..."; mp["--..."] = "7"; mp["8"] = "---.."; mp["---.."] = "8"; mp["9"] = "----."; mp["----."] = "9";
#if 0//打表char x[128], y[128];while(~scanf("%s %s ", x, y)) {printf("mp[\"%s\"] = \"%s\"; ", x, y);printf("mp[\"%s\"] = \"%s\"; ", y, x);}return 0;
#endifscanf("%d ", &Q);while(Q--) {getline(cin, buf);// cout << buf << endl;string ans = "", key = "";if(buf[0]=='.' || buf[0]=='-')sloveA(ans, key);else sloveB(ans, key);printf("%s\n", ans.data());}#ifdef debugclock_t etime = clock();
#endif return 0;
}

pat 7-7 莫尔斯码(Morse Code) (15分) 模拟相关推荐

  1. [PAT B1036]跟奥巴马一起编程(15分)

    1036 跟奥巴马一起编程(15)(15 分) 美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统.2014年底,为庆祝"计算机科学教育周& ...

  2. 【2020模拟考试T1】【PAT乙】1031 查验身份证 (15分)模拟

    problem 1031 查验身份证 (15分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10, ...

  3. 【PAT乙】1001 害死人不偿命的(3n+1)猜想 (15分) 模拟,水水更健康

    1001 害死人不偿命的(3n+1)猜想 (15分) 卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把 (3n+1) 砍掉一半.这样一直反复砍 ...

  4. PAT --- 1036.跟奥巴马一起编程 (15 分)

    1036 跟奥巴马一起编程 (15 分) 美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统.2014 年底,为庆祝"计算机科学教育周&qu ...

  5. PAT 1086 就不告诉你(15 分)

    1086 就不告诉你(15 分) 做作业的时候,邻座的小盆友问你:"五乘以七等于多少?"你应该不失礼貌地围笑着告诉他:"五十三."本题就要求你,对任何一对给定的 ...

  6. PAT(乙级)1011 A+B 和 C (15 分)

    1011 A+B 和 C (15 分) 这个题也比较水,发上来凑个数吧,这两天太忙也没有更新. #include<stdio.h> int main() {int i,n;double a ...

  7. 【PAT乙级】1056 组合数的和 (15 分)

    题目地址 #include<cstdio> #include<iostream> using namespace std; int a[15]; int b[105]; int ...

  8. 【PAT乙级】1091 N-自守数 (15 分)

    题目地址 #include<cstdio> #include<iostream> #include<cmath> using namespace std; int ...

  9. PAT 1006 换个格式输出整数 (15 分)(Java)

    题目描述:   让我们用字母 B 来表示"百".字母 S 表示"十",用 12-n 来表示不为零的个位数字 n(<10),换个格式来输出任一个不超过 3 ...

最新文章

  1. 《京东峰值系统设计》读后感
  2. Codeforces Round #496 (Div. 3)【未完结】
  3. 谈谈java中遍历Map的几种方法
  4. pip 10.0.0 BUG 解决方案Traceback (most recent call last): File /usr/bin/pip3, line 9, in module...
  5. 天线下倾角示意图_《天线和下倾角.ppt
  6. java集合转labelpoint_java – 向Spark ML LabeldPoint添加自定义字段
  7. Python随笔(二)GIL
  8. 语音识别维特比解码_一种基于维特比算法的花洒语音识别系统及方法与流程
  9. 为什么我的devc 调试不了c 语言,devc++为什么调试不了,求大神帮看看!
  10. Mac下安装Lingo
  11. JSON转换问题最全详解(json转List,json转对象,json转JSONObject)
  12. 企业信息化建设的意义
  13. windows下V-Rep下载及安装教程
  14. linux下ftp客户端主动模式设置
  15. Vue实现状态的不同颜色
  16. 事务日志备份文件达到 47G 大小,啥原因导致 ?
  17. 一张图看明白云计算数据中心总体分层架构
  18. ldc服务器销售,ldc云服务器源码
  19. Python 结巴(jieba)库之花拳绣腿
  20. C# 关于压缩、加密、解压问题

热门文章

  1. Vue错误03:Property or method “xxx“ is not defined on the instance but referenced during render.
  2. 食品品牌如何做好消费需求洞察直抵消费者心智
  3. 七年级上册英语第三单元单词课文翻译
  4. 〖全域运营实战白宝书 - 运营角色认知篇⑥〗- 不同企业的 “运营“ 不一样
  5. rs232读取智能电表_智能电表防窃电原理 偷电为什么会被发现
  6. 2021-09-14
  7. [刷题]leetcode\278_第一个错误的版本
  8. MATLAB LSB图像信息隐藏 最低位平面验证 以及PSNR SSIM评价
  9. 哪个系统检测论文比较好?
  10. j2ee常用工作流比较(shart、osworkflow、jbpm)