蓝桥杯 ADV-226 算法提高 9-3摩尔斯电码

问题描述
摩尔斯电码破译。类似于乔林教材第213页的例6.5,要求输入摩尔斯码,返回英文。请不要使用"zylib.h",只能使用标准库函数。用' * '表示' . ',中间空格用' | '表示,只转化字符表。
摩尔斯码定义见:http://baike.baidu.com/view/84585.htm?fromId=253988。

提示
清橙进行评测时,输入是以EOF结尾的,而不是换行符。(EOF不是一个字符,“以EOF结尾”是一种通俗但不严谨的说法。)因此可以通过以下方式之一获取输入:
1. 一次读入整行字符串,再进行后续解析。
2. 使用getchar或scanf一次读入一个字符,通过它们的返回值判断输入结束。

样例输出

#include 
#include 
#include 
using namespace std;
int main() {
    map m;
    m["*-"] = 'a';
    m["-***"] = 'b';
    m["-*-*"] = 'c';
    m["-**"] = 'd';
    m["*"] = 'e';
    m["**-*"] = 'f';
    m["--*"] = 'g';
    m["****"] = 'h';
    m["**"] = 'i';
    m["*---"] = 'j';
    m["-*-"] = 'k';
    m["*-**"] = 'l';
    m["--"] = 'm';
    m["-*"] = 'n';
    m["---"] = 'o';
    m["*--*"] = 'p';
    m["--*-"] = 'q';
    m["*-*"] = 'r';
    m["***"] = 's';
    m["-"] = 't';
    m["**-"] = 'u';
    m["***-"] = 'v';
    m["*--"] = 'w';
    m["-**-"] = 'x';
    m["-*--"] = 'y';
    m["--**"] = 'z';
    string s;
    vector v;
    cin >> s;
    s += '|';
    for(int i = 0; i < s.length(); i++){
        string t;
        for(; s[i] != '|'; i++)
            t += s[i];
        v.push_back(t);
    }
    for(int i = 0; i < v.size(); i++)
        cout << m[v[i]];
    return 0;
}

 

你可能感兴趣的:(蓝桥杯)