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相关推荐

  1. input属性为number,maxlength不起作用的解决方案

    <input type="text" maxlength="11" /> 效果ok, 当 <input type="number&q ...

  2. ORA-19502: write error on file xxxxx, block number xxxx

    错误现象: 在ORACLE 10g下为表空间IGNITE_EGVSQL01增加数据文件时,报如下错误: SQL> ALTER TABLESPACE IGNITE_EGVSQL01      AD ...

  3. 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 ...

  4. HDU 1711 Number Sequence(KMP算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1711 Number Sequence Time Limit: 10000/5000 MS (Java/ ...

  5. LeetCode 191 Number of 1 Bits

    LeetCode 191 Number of 1 Bits 解法一(较为传统都解法):使用将n不断右移,并与1想&得到1的个数:(也有使用除法/2的,明显除法的运行效率要低于位移) 时间复杂度 ...

  6. [BuildRelease]build number / id

    build number, 也称为build id, 在build release的流程中唯一标示一个build,也是正式的产品的product version 和file version后两位(Ma ...

  7. Oracle-ORA-01722 invalid number错误

    本来正常的,经过抓包才知道原来是数字型的无意中多了乱码! 本来是3276的居然多了后面一串 3276PuAnrSeU2zliU+IV/FHlnX2Xgia1au2xX2vMWtw http://www ...

  8. input输入框为number类型时,去掉上下小箭头

    input输入框type为number时,去掉上下小箭头,方式如下: <input type="number" ...><style>/* 在Chrome浏 ...

  9. 表单系列之input number总结

    各浏览器表现 <input type="number" /> chrome 除数字字符,只可输入e和. IE 除数字字符,其他字符均可输入,无报错 Firefox 除数 ...

  10. 【HDU】1005 Number Sequence (有点可爱)

    http://acm.hdu.edu.cn/showproblem.php?pid=1005 A number sequence is defined as follows: f(1) = 1, f( ...

最新文章

  1. WPF 触发器Triggers
  2. 矩阵正态分布基础1 外形式、外积与微分形式简介
  3. python基础知识纵览(下)
  4. mysql多地备份_mysql简单批量备份多个库
  5. 在windows xp下,一块网卡绑定多个ip
  6. 超实用的微信图片转换工具
  7. python利用微信的方法_作为程序员,如何利用Python玩转微信,让你的微信与众不同...
  8. dbf如何导入oracle_Oracle软件的安装介质被注入恶意程序事件分析与防御
  9. UniDrop:一种简单而有效的Transformer提升技术
  10. Cocos2dx3.0过渡篇 globalZOrder()与localZOrder()
  11. LabVIEW 读写和缩放音频文件
  12. android ip计算,子网掩码怎么算_ipv6子网掩码计算器_掩码计算器android
  13. 初中参观机器人博物馆的作文_参观机器人博物馆作文
  14. csm和uefi_传统bios引导与uefi引导之比较
  15. 从键盘上输入10个数,求其平均值。
  16. Oracle get、start、edit、spool命令,临时变量、已定义变量
  17. STM32控制步进电机:基于定时器中断的ULN2003驱动器/步进电机驱动程序
  18. MAP(Maximum A Posteriori,最大后验准则)算法
  19. Js 跳转页面和打开新窗口的方法
  20. 计算机打不开guest用户,老司机应对win10系统打不开guest账户的恢复步骤

热门文章

  1. 自定义Word样式模板,设置为默认模板
  2. C语言 | 哈夫曼(haffman)算法实现数据的解压缩(源代码)
  3. 北斗导航 | RAIM:单差载波相位完好性监测(接收机自主完好性检测)
  4. C++练习 | C++从入门到放弃(基础+进阶C++ github)
  5. tiny cc在云服务centos上运行
  6. php320,PHP_PHP正式版-320mp3下载站
  7. 【深度学习】在PyTorch中使用 LSTM 自动编码器进行时间序列异常检测
  8. 建议收藏!一文走遍机器学习的6个主流模型
  9. 关于最近实践 Bert 的一些坑
  10. 终于有人把机器学习中的评价指标讲清楚了