算法竞赛入门经典(第2版)习题4-6 莫尔斯电码 Morse Mismatches UVa 508

本文介绍了在解决UVa 508(Morse Mismatches)问题时遇到的挑战,包括读入数据、构建Morse编码词典、匹配编码过程中的逻辑错误,以及如何通过调整和对拍找到并修复错误。强调了细致检查和理解程序逻辑的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

逻辑如下

1.读入每个字母的Morse编码m[40][10]

2.读入词典word[maxn][11]

3.对照字母将词典翻译为Morse编码词典mword[maxn][61],并计算出每个词的编码长度mlen[maxn]

4.读入编码code[maxn][81]同时计算出编码长度clen[maxn]

5.从Morse编码词典中查找相同长度的编码检验其是否能匹配,对通过检验的mword计数,并将第一个精确匹配上的词序号记录

6.如果存在且只有一个mword[n]能够精确匹配则直接输出,如果存在但有多个mword[n]能够精确匹配则输出第一个匹配上的词,后面加上“!”

7.如果不存在则能够精确匹配的mword[n],则递增变量i,对比长度为clen-i的mword[n]的前clen-i个字符或对比长度为clen+i的前clen个字符,发现能够匹配的词就输出并添加后缀“?”


这题前几次提交总是报“runtime error”,把数组反复调大一点后终于wa了。wa了两天,各种修改,甚至把读取数据的方式从getchar改成了scanf,但一直过不去。

只好一边改错一边搜ac的标程,今天终于搜到了(谢谢作者代号4101)。<

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值