1.2 Name That Number
2019独角兽企业重金招聘Python工程师标准>>>
这是一个类似于查字典的问题。已知一本“字典”中包含了一些英文单词(5000个左右,单词长度为1~12位),又已知一种对应关系,数字2~9共对应除去Q和Z的24个英文字母,每个数字可对应3个英文字母,如2可对应A,B,C,也就是说A,B,C均可用2表示。那给你一个n位的数字,这个数字可以表示的单词就有3^n种。现题目给定一个1~12位长的数字,要求输出在字典中存在的这个数字所对应成的所有单词。
由于字典中包含的单词数量不多,我们可以先将单词读入内存,然后一一比较。但这种做法肯定不是最好的,如果单词的个数很多的话,那肯定花的时间会增大,这种方法必须把每个字典里的每个单词都比较一次。
想到用哈希查找的方法,可以以数字为关键字key,f=key%5000作为哈希函数,定义数组arr[5000],将关键字为key的单词全都存到以arr[f]为头结点的链表中,这样的话每次查询都可以直接定址到key%5000,大大减少查询时间。写了好久,最后终于通过了。
/*
ID: whutzha1
PROG: namenum
LANG: C++
*/
#include<fstream>
using namespace std;
ifstream cin("namenum.in");
ifstream fin("dict.txt");
ofstream cout("namenum.out");struct Node
{char name[13];long long num;Node *next;
};int main()
{Node *arr[5000];int i;for (i=0;i<5000;i++){arr[i]=NULL;}//读dict.txt文件char read_name[13];long long read_num;int area;int n;char ch;while(fin.get(ch)){for (i=0;i<13;i++){while(ch==' '||ch=='\n'){ fin.get(ch); }read_name[i]=ch;fin.get(ch);if (ch==' '||ch=='\n')break; }read_name[i+1]='\0';read_num=0;for(i=0;i<12;i++){switch(read_name[i]){case 'A':case 'B':case 'C': n=2;break;case 'D':case 'E':case 'F': n=3;break;case 'G':case 'H':case 'I': n=4;break;case 'J':case 'K':case 'L': n=5;break;case 'M':case 'N':case 'O': n=6;break;case 'P':case 'R':case 'S': n=7;break;case 'T':case 'U':case 'V': n=8;break;case 'W':case 'X':case 'Y': n=9;break;default: break;}read_num=(read_num*10+n);if (i==11||read_name[i+1]=='\0') {area=read_num%5000;Node *p=(Node *)malloc(sizeof(Node));if (arr[area]==NULL) {arr[area]=p;}else {Node *q=arr[area];Node *r;while (q){r=q;q=q->next;}r->next=p;}p->num=read_num;p->next=NULL;for (i=0;i<13;i++){p->name[i]=read_name[i];if (p->name[i]=='\0'){break;}}break;}} }//while long long num;bool flag;cin>>num;Node *p;p=arr[num%5000];flag=false;while(p){if (p->num==num){flag=true;// for(i=0;i<12;i++)// {// cout<<p->name[i];// if (p->name[i+1]=='\0')// {cout<<endl;break;} // }cout<<p->name<<endl;}p=p->next;}if (!flag) {cout<<"NONE"<<endl;}return 0;
}
转载于:https://my.oschina.net/u/585691/blog/71996
1.2 Name That Number相关推荐
- input属性为number,maxlength不起作用的解决方案
<input type="text" maxlength="11" /> 效果ok, 当 <input type="number&q ...
- ORA-19502: write error on file xxxxx, block number xxxx
错误现象: 在ORACLE 10g下为表空间IGNITE_EGVSQL01增加数据文件时,报如下错误: SQL> ALTER TABLESPACE IGNITE_EGVSQL01 AD ...
- LeetCode刷题记录10——434. Number of Segments in a String(easy)
LeetCode刷题记录10--434. Number of Segments in a String(easy) 目录 LeetCode刷题记录9--434. Number of Segments ...
- HDU 1711 Number Sequence(KMP算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1711 Number Sequence Time Limit: 10000/5000 MS (Java/ ...
- LeetCode 191 Number of 1 Bits
LeetCode 191 Number of 1 Bits 解法一(较为传统都解法):使用将n不断右移,并与1想&得到1的个数:(也有使用除法/2的,明显除法的运行效率要低于位移) 时间复杂度 ...
- [BuildRelease]build number / id
build number, 也称为build id, 在build release的流程中唯一标示一个build,也是正式的产品的product version 和file version后两位(Ma ...
- Oracle-ORA-01722 invalid number错误
本来正常的,经过抓包才知道原来是数字型的无意中多了乱码! 本来是3276的居然多了后面一串 3276PuAnrSeU2zliU+IV/FHlnX2Xgia1au2xX2vMWtw http://www ...
- input输入框为number类型时,去掉上下小箭头
input输入框type为number时,去掉上下小箭头,方式如下: <input type="number" ...><style>/* 在Chrome浏 ...
- 表单系列之input number总结
各浏览器表现 <input type="number" /> chrome 除数字字符,只可输入e和. IE 除数字字符,其他字符均可输入,无报错 Firefox 除数 ...
- 【HDU】1005 Number Sequence (有点可爱)
http://acm.hdu.edu.cn/showproblem.php?pid=1005 A number sequence is defined as follows: f(1) = 1, f( ...
最新文章
- WPF 触发器Triggers
- 矩阵正态分布基础1 外形式、外积与微分形式简介
- python基础知识纵览(下)
- mysql多地备份_mysql简单批量备份多个库
- 在windows xp下,一块网卡绑定多个ip
- 超实用的微信图片转换工具
- python利用微信的方法_作为程序员,如何利用Python玩转微信,让你的微信与众不同...
- dbf如何导入oracle_Oracle软件的安装介质被注入恶意程序事件分析与防御
- UniDrop:一种简单而有效的Transformer提升技术
- Cocos2dx3.0过渡篇 globalZOrder()与localZOrder()
- LabVIEW 读写和缩放音频文件
- android ip计算,子网掩码怎么算_ipv6子网掩码计算器_掩码计算器android
- 初中参观机器人博物馆的作文_参观机器人博物馆作文
- csm和uefi_传统bios引导与uefi引导之比较
- 从键盘上输入10个数,求其平均值。
- Oracle get、start、edit、spool命令,临时变量、已定义变量
- STM32控制步进电机:基于定时器中断的ULN2003驱动器/步进电机驱动程序
- MAP(Maximum A Posteriori,最大后验准则)算法
- Js 跳转页面和打开新窗口的方法
- 计算机打不开guest用户,老司机应对win10系统打不开guest账户的恢复步骤
热门文章
- 自定义Word样式模板,设置为默认模板
- C语言 | 哈夫曼(haffman)算法实现数据的解压缩(源代码)
- 北斗导航 | RAIM:单差载波相位完好性监测(接收机自主完好性检测)
- C++练习 | C++从入门到放弃(基础+进阶C++ github)
- tiny cc在云服务centos上运行
- php320,PHP_PHP正式版-320mp3下载站
- 【深度学习】在PyTorch中使用 LSTM 自动编码器进行时间序列异常检测
- 建议收藏!一文走遍机器学习的6个主流模型
- 关于最近实践 Bert 的一些坑
- 终于有人把机器学习中的评价指标讲清楚了