• HNUSTOJ-1675 Morse Code(DFS+字典序搜索)


    1675: Morse Code

    时间限制: 2 Sec  内存限制: 128 MB
    提交: 73  解决: 33
    [提交][状态][讨论版]

    题目描述

     摩尔斯电码(英语:Morse Code)是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号。是由美国人萨缪尔·摩尔斯在1836年发明。

                                                                                                        --摘自维基百科
    摩尔斯电码的代码有点(.),划(-)以及停顿组成。
    常见的字符编码见下表:
     
    现在我们有码文,可惜的是字符中间的停顿不见了,例如"-.-.", 可以被译码为"C", "KE","NN", "NTE", "TAE", "TEN", "TETE", 或 "TR". 

    输入

     仅有一行,由点和划构成的字符串,字符串长度不超过25。

     

     

    输出

     按字母序输出字符串所有可能的译码,每种情况占一行。

     

     

    样例输入

    --.-.
    

    样例输出

    GN
    GTE
    MAE
    MEN
    METE
    MR
    QE
    TC
    TKE
    TNN
    TNTE
    TTAE
    TTEN
    TTETE
    TTR
    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<string>
    #include<map>
    #include<set>
    using namespace std;
     
    char dic[26][7]={
     ".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---",
     "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-",
     "..-", "...-", ".--", "-..-", "-.--", "--.."
    };
     
    int len;
    char a[25], b[25];
     
    bool Strcmp(int cur, char *str){
        int len = strlen(dic[cur]);
        for(int i = 0; i < len; i++)
            if(*(str + i) != dic[cur][i]) return false;
        return true;
     
    }
    void DFS(int cur, int l){
        if(cur == len) {
            for(int i = 0; i < l; i++) printf("%c", a[i]);
            printf("
    "); return;
        }
        for(int i = 0; i < 26; i++){
            if(Strcmp(i, b + cur)){
                a[l] = 'A' + i;
                DFS(cur + strlen(dic[i]), l + 1);
            }
        }
    }
    int main(){
        scanf("%s", b);
        len = strlen(b);
        DFS( 0, 0);
    }
  • 相关阅读:
    c#和unity引擎的所有笔记
    C#笔记(十九)——委托和事件
    委托
    c#笔记(十七)——队列
    js正则表达式
    mysql分页
    springMVC
    hibernate与spring整合实现transaction
    spring aop
    about hibernate lazy load and solution
  • 原文地址:https://www.cnblogs.com/Pretty9/p/7406686.html
Copyright © 2020-2023  润新知