poj 2503 qsort+bsearch
2012-01-18 11:01
274 查看
题意:输入一个英文单词+空格+外文单词,要求输入外文单词找到对应的英文单词,如果找不到输出eh.
因为单词的输入量是100000,并且还要考虑单词匹配的问题,所以简单的算法应该会超时,本人没有去写。
通过这道题学到了sscanf(),qsort(),bsearch()的用法,感觉比较爽,这道题就是把单词进行快排,有序了以后,然后再二分查找从而节省时间。
因为单词的输入量是100000,并且还要考虑单词匹配的问题,所以简单的算法应该会超时,本人没有去写。
通过这道题学到了sscanf(),qsort(),bsearch()的用法,感觉比较爽,这道题就是把单词进行快排,有序了以后,然后再二分查找从而节省时间。
#include<iostream> #include<stdlib.h> using namespace std; struct str { char str1[11];//英文单词 char str2[11];//外文单词 }; int q_cmp(const void *a,const void *b) { return strcmp(((str*)a)->str2,((str*)b)->str2); //因为要快排外文单词,所以指向str2. } int b_cmp(const void *a,const void *b) { return strcmp((char*)a,((str*)b)->str2); //查找str2 } int main() { str a[100005],*find; char word[25]; int i=0,flag=0; while(gets(word)) { if(word[0]=='\0'&&!flag) { qsort(a,i,sizeof(str),q_cmp);//题目中输入一个空行之后进行快排 flag=1;//同时标记赋值为1 continue; } if(!flag) { sscanf(word,"%s %s",a[i].str1,a[i].str2); //输入英文单词和外文单词,同时把单词分割赋值给结构体的str1,str2 i++;//下标加一 } if(flag) { find=(str*)bsearch(word,a,i,sizeof(str),b_cmp); //二分的查找空行之后的外文单词word,返回值是一个指向结构体类型的指针 if(find!=NULL) printf("%s\n",find->str1);//用指针指向输出英文单词 else printf("eh\n"); } } //system("pause"); }
相关文章推荐
- POJ 2503 Babelfish hash / qsort+ bsearch
- POJ 2503 Babelfish qsort+bserach
- poj 2503 Babelfish(hash or 字典树)
- POJ 2503 Babelfish (STL map的应用)
- poj 2388 Who's in the Middle-----qsort 排序
- POJ 2503 Babelfish
- POJ 2503 Babelfish 字典树
- poj--2503+字典树入门题
- POJ 2503 Babelfish map水过,字典树????
- STL之map——解决POJ 2503
- poj 2503 Babelfish trie树!!!!指针版和数组版 基础
- poj_2503(map映射)
- ACM POJ 2503 (Babelfish)
- poj 2503 Babelfish(广义索引类线性表:快排+二分)
- POJ-2503 Babelfish
- Poj 2503 / OpenJudge 2503 Babelfish
- POJ训练计划2503_Babelfish(二分)
- poj_2503_Babelfish(字典树&&map)
- poj 2503 Babelfish (查找 map)
- POJ 2503 Babelfish(Hash)