1. 首先我理解错了题意,在这篇文章找到了UVa 508 Morse Mismatches(莫尔斯电码)
    这题的意思是给定一些莫尔斯编码,给定一些已知字典,给定一些编码,求解这些编码的对应原文,如果可以精确匹配,则直接输出原单词,如果有多个可精确匹配的结果,则输出匹配结果里字典序最小的单词(紫书上说输出任意一个,这是错误的)并在末位加上“!”;如果无法精确匹配,则可以在编码的末尾增加或删除一些字符后匹配单词(增删应尽量小,就是找到增删最少的模糊匹配),无论增删后匹配一个还是多个,最后都要加上“?”,如果有多个模糊匹配结果(增删数相等),则输出字典序最小的匹配结果;如果无精确匹配也无模糊匹配结果,则输出整个给定字典里字典序最小的那个单词。
  2. 其次我把数组设得太小 char word[12],不过在调试过程中学到了很多东西,倒是错得值得。下面列出
  3. strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。
  4. std::ios::sync_with_stdio(false);
    原来而cin,cout之所以效率低,是因为先把要输出的东西存入缓冲区,再输出,导致效率降低,而这段语句可以来打消iostream的输入输出缓存,可以节省许多时间,使效率与scanf与printf相差无几,还有应注意的是scanf与printf使用的头文件应是stdio.h而不是iostream。
    我沒有使用这句。
// uva508.cpp
#include <stdio.h>
#include <string.h>
#include <algorithm>
char table[40][10];
struct context {char word[20];  // 12 is too smallchar code[100];bool operator < (const context y) const {return strcmp(word, y.word) < 0;}
} words[110];int main(){char c; memset(table, '\0', sizeof(table));for(;;){scanf("%s", &c);  // %c will input the '\n', result in endless loopif (c == '*') break;if (c >= 'A' && c <= 'Z') scanf("%s", table[c - 'A']);else scanf("%s", table[c - '0' + 26]);}int n_words = 0;memset(words, '\0', sizeof(words));for (;;){scanf("%s", words[n_words].word);if (words[n_words].word[0] == '*') break; // okint len = strlen(words[n_words].word);for (int i = 0; i < len; i++){char word = words[n_words].word[i]; // translate the word to morse codeint q; if (word >= 'A' && word <= 'Z') q = word - 'A';else q = word - '0' + 26;strcat(words[n_words].code, table[q]);}n_words++;}std::sort(words, words + n_words);char str[81];for (;;){scanf("%s", str);if (str[0] == '*') break;int p_word = 0, diff = 81, num = 0, len_str = strlen(str);for (int i = 0; i < n_words; i++){int len_code = strlen(words[i].code);if (len_str <= len_code){if (strstr(words[i].code, str) == words[i].code){if (len_code - len_str < diff){p_word = i;diff = len_code - len_str;num = 1;}else if (len_code - len_str == diff) num++;}}else {if (strstr(str, words[i].code) == str){if (len_str - len_code < diff){p_word = i;diff = len_str - len_code;num = 1;}else if (len_str - len_code == diff) num++;}}}printf("%s", words[p_word].word);if (diff == 0 && num > 1) putchar('!');else if (diff != 0 ) putchar('?');putchar('\n');}return 0;
}

uva508 莫尔斯电码(Morse Mismatches)相关推荐

  1. UVA-508 莫尔斯电码 题解答案代码 算法竞赛入门经典第二版

    https://github.com/jzplp/aoapc-UVA-Answer 这个题目就是在考验英语水平呀!(或者题目本身也写的不清楚) 尤其是多个完全匹配(!)和模糊匹配(?)的情况,我题意看 ...

  2. 习题4-6 莫尔斯电码 UVa508

    算法竞赛入门经典(第2版)第4章 函数和递归 习题4-6 莫尔斯电码  UVa508 感悟. 1.阅读书中题目,从网站下载英文原题,重点在看输入输出数据与格式. 2.英文的阅读量还是比较大的,莫尔斯电 ...

  3. 设计一个莫尔斯电码电报机

    //设计一个电报机 //要导入的包 import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.Action ...

  4. [AHK]将字符转换成莫尔斯电码

    这个程序可以在记事本中使用.当用户按下空格键时,程序会获取当前选中的文本,并将其转换为莫尔斯电码播放出来.如果用户选中的文本包含非摩尔斯电码字符,程序会自动忽略它们. 将字符转换成莫尔斯电码 ; 这个 ...

  5. 莫尔斯电码对照表_使用莫尔斯电码编码纯文本

    莫尔斯电码对照表 This began as a thought experiment while waiting for patches to install on my system. 这是在等待 ...

  6. Escape/Unescape,HTML实体编码,敲击码(Tap code),摩尔斯电码(Morse Code)

    1.Escape/Unescape 加密解码/编码解码,又叫%u编码,采用UTF-16BE模式, Escape编码/加密,就是字符对应UTF-16 16进制表示方式前面加%u.Unescape解码/解 ...

  7. 树莓派作品2_莫尔斯电码

    一.创意来源 莫尔斯电码历史悠久,我从小时候就听说过莫尔斯电码了伟大了,不过直至今日我都没有机会过过手瘾,亲手用莫尔斯电码来输出一些有意义的句子. 不过有了树莓派,一切都不成问题,只要两个按钮,就能帮 ...

  8. java morse电码,摩斯电码morse code软件下载-摩斯电码morse code手机版下载v3.80 安卓版-2265安卓网...

    摩斯电码morse code手机版是一款主要研究摩斯密码的软件,用户可以通过软件帮助进行学习,学习更多的摩斯密语的相关知识!软件还提供有相关的监测功能,帮助用户了解的自己学习的现状!感兴趣的用户快来2 ...

  9. 莫尔斯电码(Python)

    莫尔斯电码采用了短脉冲和长脉冲 (分别为点和点划线) 来编码字母和数字. 例如,字母"A"是点划线,"B"是点划线点点.如文件 Mos.txt 文件所示. A ...

最新文章

  1. RetinaFace,最强开源人脸检测算法
  2. 怎么修剪_夹竹桃怎么养?这样“修剪”一下,一年开3、4次花,花大色艳
  3. 阿里钉钉,马云旗下的又一个千亿美金产品?
  4. ASP.NET Web API 记录请求响应数据到日志的一个方法
  5. HTML5常用标签及特殊字符表
  6. 机器学习 --- 2. 从最大似然再看线性回归(转)
  7. 企业申请CMMI3-CMMI5必经的六个阶段
  8. 【Linux系统压力测试】【内存压测】【CPU压测】【磁盘空间压测】
  9. FPGA零基础学习:按键控制LED
  10. J.K.罗琳 哈佛大学毕业演讲
  11. 《高效能青少年的七个习惯》读后感作文3700字
  12. 【前端】在Vue2中使用Vanta.js炫酷动态背景(全屏背景)
  13. 电视剧旗舰剧情分集大结局
  14. Unity简单使用Job System
  15. 大数据----机器学习---神经网络
  16. 为什么数据线连接电脑只能充电
  17. 【网络教程】如何删除微软云Microsoft Azure绑定的信用卡(解绑信用卡)
  18. 使用C++编写一个可视化窗口
  19. python实现打印模板映射
  20. 多态的向上转型与向下转型

热门文章

  1. MyBatis出现过时问题
  2. 计算机毕业设计之社区居家养老服务系统
  3. 老毛桃PE修改方法(屏蔽更改主页,屏蔽加装的绿色浏览器)
  4. 网页前端设计-作业二(CSS)
  5. POI 图表中加入文本框
  6. 美国名校毕业的CEO,为什么坚持与一线工人同吃同住?
  7. 038-云E办_工资账套功能
  8. Swagger结合PostMan完成接口自动化测试
  9. c语言程序设计库搜索app,C语言编程宝典app
  10. 50款森系暗黑风格调色,Lightroom预设合集/手机滤镜下载