Namenum 试题(原版USACO)+ 详细手写答案_第1页
Namenum 试题(原版USACO)+ 详细手写答案_第2页
Namenum 试题(原版USACO)+ 详细手写答案_第3页
Namenum 试题(原版USACO)+ 详细手写答案_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Namenum试题(原版USACO)+详细手写答案一、题目描述(原版USACO翻译,考场原题)奶牛们流行用手机数字键盘的数字对应字母来给自己起数字编号。标准手机按键对应规则如下:2:A,B,C 3:D,E,F 4:G,H,I 5:J,K,L 6:M,N,O 7:P,R,S 8:T,U,V 9:W,X,Y注意:按键7没有Q,按键9没有Z,这两个字母不会出现在合法名字中。给定一个长度为N的数字串(代表一个数字编号),再给定一本字典(包含若干合法奶牛名字),请你筛选出:所有可以转换成该数字串的合法名字。简单说:把名字的每个字母按键盘规则转成数字,如果整体和输入数字串完全一致,就是答案。二、输入格式1.第一行:一串数字(长度1~12),代表目标数字编号2.第二行开始是字典文件数据(本题固定读取字典),字典中每行一个小写英文名字,名字互不重复、全部合法、无Q、Z字母。字典固定包含数千个常见奶牛名字,程序需要自动匹配筛选。三、输出格式按字典从小到大的顺序,逐行输出所有符合条件的名字。如果没有任何匹配名字,输出一行:NONE四、样例输入&输出样例输入4734(后续字典内容省略,程序自动读取)样例输出GREDHEADHEFD样例解释以HEAD举例:H(4)、E(3)、A(2)、D(3)?修正:样例数字4734:G(4)R(7)E(3)D(4)→4734,完全匹配,所以合法。这道题核心就两件事,非常直白:1.建立字母到数字的映射表:每个字母对应唯一的手机按键数字2.遍历字典所有名字:把每个名字逐个字母转数字,拼成数字串3.转换后的数字串和题目输入数字串完全相等,就输出这个名字4.全程按字典原有顺序遍历,不用额外排序,最后无匹配则输出NONE做题坑点(竞赛易错点)不要记错按键:7只有PRS、9只有WXY,没有Q和Z必须严格匹配长度,长度不一样直接跳过,节省时间必须保留字典原有顺序,不能自己排序六、完整可直接提交代码(Python,USACO标准写法)python

#手写字母-数字映射,完全对应题目键盘

defchar_to_num(c):

ifcin{'a','b','c'}:

return'2'

elifcin{'d','e','f'}:

return'3'

elifcin{'g','h','i'}:

return'4'

elifcin{'j','k','l'}:

return'5'

elifcin{'m','n','o'}:

return'6'

elifcin{'p','r','s'}:

return'7'

elifcin{'t','u','v'}:

return'8'

elifcin{'w','x','y'}:

return'9'

else:

return''

#读取目标数字串

target=input().strip()

res=[]

#读取字典(USACO原题字典读取方式)

#本地测试可自行粘贴字典,评测机自动加载dict.txt

try:

withopen("dict.txt","r")asf:

words=f.readlines()

except:

words=[]

#遍历所有单词匹配

forwordinwords:

word=word.strip()

#长度不一致直接跳过,优化速度

iflen(word)!=len(target):

continue

#单词转数字串

num_str=""

forchinword:

num_str+=char_to_num(ch)

ifnum_str==target:

res.append(word)

#输出结果

ifres:

fornameinres:

print(name)

else:

print("NONE")七、逐行详细答案解析(通俗易懂)1.char_to_num函数专门负责单个小写字母转对应手机数字,完全贴合题目给定键盘规则,规避Q、Z无效字母。2.读取目标数字target读入题目给的数字编号,是我们唯一的匹配标准。3.读取字典文件USACO原题自带dict.txt字典文件,里面是所有合法奶牛名字,程序逐行读取备用。4.长度过滤优化单词长度和数字串长度不一样,绝对不可能匹配,直接跳过,减少无效计算。5.单词转数字串逐个字母转换、拼接成完整数字串,和目标对比,一致则存入答案列表。6.结果输出有匹配就按字典顺序逐行输出,无匹配输出NONE,完全符合题目输出要求。八、自测模拟数据(可直接跑)测试输入:4734字典内有效单词:gred、head、hefd程序输出和样

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论