OpenJudge百炼-2804-词典-C语言-二分查找
来源:互联网 发布:php公开课 编辑:程序博客网 时间:2024/05/16 12:09
描述:
你旅游到了一个国外的城市。那里的人们说的外国语言你不能理解。不过幸运的是,你有一本词典可以帮助你。
输入:
首先输入一个词典,词典中包含不超过100000个词条,每个词条占据一行。每一个词条包括一个英文单词和一个外语单词,两个单词之间用一个空格隔开。而且在词典中不会有某个外语单词出现超过两次。词典之后是一个空行,然后给出一个由外语单词组成的文档,文档不超过100000行,而且每行只包括一个外语单词。输入中出现单词只包括小写字母,而且长度不会超过10。
输出:
在输出中,你需要把输入文档翻译成英文,每行输出一个英文单词。如果某个外语单词不在词典中,就把这个单词翻译成“eh”。
样例输入:
dog ogday
cat atcay
pig igpay
froot ootfray
loops oopslay
atcay
ittenkay
oopslay
样例输出:
cat
eh
你旅游到了一个国外的城市。那里的人们说的外国语言你不能理解。不过幸运的是,你有一本词典可以帮助你。
输入:
首先输入一个词典,词典中包含不超过100000个词条,每个词条占据一行。每一个词条包括一个英文单词和一个外语单词,两个单词之间用一个空格隔开。而且在词典中不会有某个外语单词出现超过两次。词典之后是一个空行,然后给出一个由外语单词组成的文档,文档不超过100000行,而且每行只包括一个外语单词。输入中出现单词只包括小写字母,而且长度不会超过10。
输出:
在输出中,你需要把输入文档翻译成英文,每行输出一个英文单词。如果某个外语单词不在词典中,就把这个单词翻译成“eh”。
样例输入:
dog ogday
cat atcay
pig igpay
froot ootfray
loops oopslay
atcay
ittenkay
oopslay
样例输出:
cat
eh
loops
/**********************************************************文件名:百炼-2804**Copyright (c) 2015-2025 OrdinaryCrazy**创建人:OrdinaryCrazy**日期:20170915**描述:百炼2804参考答案**版本:1.0*********************************************************/#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct word{ char fore[15],tran[15];}word;word dictionary[100000];char temp[50],des[15];int compare(const void*a,const void*b){ word* w1 = (word*)a; word* w2 = (word*)b; return strcmp(w1->fore,w2->fore);}int find(int from,int to)//查词函数,如果查到单词就返回单词所在条目数,查不到则返回-1{ if(to - from < 3) { int i; for(i = from;i <= to;i++) if(strcmp(des,dictionary[i].fore) == 0) return i; return -1; } int mid = (from + to) / 2; if(strcmp(des,dictionary[mid].fore) == 0) return mid; if(strcmp(des,dictionary[mid].fore) > 0) return find(mid,to); return find(from,mid);}int main(){ int size = 0,res; gets(temp); while(temp[0] != '\0') { sscanf(temp,"%s%s",dictionary[size].tran,dictionary[size].fore); size++; gets(temp); } qsort(dictionary,size,sizeof(word),compare); while(scanf("%s",des) != EOF) { res = find(0,size-1); if(res >= 0) printf("%s\n",dictionary[res].tran); else printf("eh\n"); } return 0;}
阅读全文
0 0
- OpenJudge百炼-2804-词典-C语言-二分查找
- 百炼2774-木材加工-C语言-二分查找
- OpenJudge百炼-2974-487-3279-C语言-字符串处理
- OpenJudge百炼-2744-子串-C语言-字符串处理
- OpenJudge百炼-2712-细菌繁殖-C语言-日期处理
- OpenJudge百炼-2964-日历问题-C语言-日期处理
- OpenJudge百炼-2965-玛雅历-C语言-日期处理
- OpenJudge百炼-2966-时区转换-C语言-日期处理
- OpenJudge百炼-2950-摘花生-C语言
- OpenJudge百炼-2745-显示器-C语言-模拟
- OpenJudge百炼-1833-排列-C语言-模拟
- OpenJudge百炼-2706-麦森数-C语言-高精度计算
- OpenJudge百炼-2692-假币问题-C语言-枚举
- OpenJudge百炼-2811-熄灯问题-C语言-枚举
- OpenJudge百炼-2785-武林-C语言-模拟
- OpenJudge百炼-2803-碎纸机-C语言-递归
- OpenJudge百炼-2787-算24-C语言-枚举
- OpenJudge百炼-1191-棋盘分割-C语言-动态规划
- 快速可靠协议:KCP
- leetcode 476. Number Complement(C语言)
- @Repository @ENTITY
- 图论——寻找最短路径路线的两种算法
- Visual C++ 2010 入门经典
- OpenJudge百炼-2804-词典-C语言-二分查找
- 大三上学期尝试考研的日子(流水账)
- TypeScript
- 爬虫-04-scrapy代码编写
- 登陆界面的前台与后台
- 问题总结
- 莫队
- 统计在线用户及人数
- 【python】类和对象:一些相关的BIF