博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ2503(二分,哈希)
阅读量:6540 次
发布时间:2019-06-24

本文共 1980 字,大约阅读时间需要 6 分钟。

大意:给定n(n<=100000)对外文 英文单词 ,给出外文单词求英文单词。

分析:枚举超时用二分。

代码

#include 
#include
#include
#include
const int maxn = 100010;using namespace std;struct node{ char e[60], s[60];}dic[maxn];char t[60];int pos;int cmp(node a, node b){ return strcmp(a.s, b.s) < 0;}int binserch(char *s){ int l = 0, r = pos - 1; while (l <= r) { int mid = (l + r) / 2; if (strcmp(dic[mid].s, s) == 0) return mid; else if (strcmp(dic[mid].s, s) > 0) r = mid - 1; else l = mid + 1; } return -1;}int main(){ //freopen("C:\\in.txt", "r", stdin); pos = 0; char z; while (scanf("%s%c", dic[pos].e, &z) != EOF) { if (z == '\n') { strcpy(t, dic[pos].e); break; } scanf("%s", dic[pos++].s); } sort(dic, dic + pos, cmp); int num = binserch(t); if (num >= 0) printf("%s\n", dic[num].e); else printf("eh\n"); while (scanf("%s", t) != EOF) { num = binserch(t); if (num >= 0) printf("%s\n", dic[num].e); else printf("eh\n"); } return 0;}

hash解决:

#include 
#include
#include
const int mm = 100003;using namespace std;struct NODE{ char english[12]; char qlish[12];}dict[mm];int hashn[mm], nextn[mm];int ELFhash(char *key)//字符串hash{ long long h = 0; long long g; while (*key) { h = (h << 4) + *key++; g = h & 0xf0000000L; if (g) h^= g >> 24; h &= ~g; } return h%mm;}int main(){ //freopen("C:\\in.txt", "r", stdin); char ss[30]; int n = 0; memset(hashn, -1, sizeof(hashn)); while (gets(ss)) { if (sscanf(ss,"%s%s",dict[n].english, dict[n].qlish) != 2)//sscanf从字符串中读进与指定格式相符的数据。 break; else { int key = ELFhash(dict[n].qlish);//拉链法解决冲突,模拟链表。 nextn[n] = hashn[key]; hashn[key] = n; n++; } } while (~scanf("%s", ss)) { int i = hashn[ELFhash(ss)]; while (i != -1) { if (!strcmp(dict[i].qlish, ss)) break; i = nextn[i]; } if (i == -1) printf("eh\n"); else printf("%s\n", dict[i].english); } return 0;}

转载于:https://www.cnblogs.com/nickqiao/p/7583398.html

你可能感兴趣的文章
JavaScript面向对象 ~ 原型和继承(1)
查看>>
ubuntu下安装nginx时依赖库zlib,pcre,openssl安装方法
查看>>
spring cloud微服务分布式云架构--hystrix的使用
查看>>
linux tail
查看>>
解决Mac启动Eclipse Memory Analyzer报错问题
查看>>
jquery的$().each,$.each的区别
查看>>
mysql 缓存开启及测试
查看>>
自己写的进度条###
查看>>
windows磁盘扩容(动态磁盘)
查看>>
在jsp页面中添加富文本编译器(ueditor)+ 图片上传功能
查看>>
fedora12下安装oracle11客户端
查看>>
实现批量添加20个用户,用户名为user1-50,密码为user后面跟5个随机字符
查看>>
LVM磁盘管理
查看>>
Net命令详解
查看>>
CentOS linux 高可用集群之heartbeat
查看>>
用bat更改hosts文件批处理
查看>>
Logwatch日志分析工具
查看>>
docker 基本操作Ⅱ(关于镜像操作)
查看>>
分工與合作
查看>>
轻松设置站点对ASP危险组件的调用权限
查看>>