POJ 2503 Babelfish(字典树Trie)
来源:互联网 发布:淘宝t恤100字好评评语 编辑:程序博客网 时间:2024/05/22 03:14
题目链接:点击打开链接
题目大意:
给你一个标准英语单词到方言单词的映射表,然后再给你一系列的方言单词,要你输出每个方言单词对应的英语单词。
思路:
本题直接用map映射查找很可能会超时,所以用字典树Trie来处理。字典树节点v=0表示非单词节点,如果v=1表示单词节点,并且字典树节点还有一个string属性,用来保存对应的每个方言单词对于的英语单词。
用c++AC:
#include<cstdio>#include<cstring>#include<vector>#include<iostream>#include<string>using namespace std;#define maxn 26;const int maxenode=1000000+100;const int maxnsize=26;struct Trie{int ch[maxenode][maxnsize];int val[maxenode];int sz;string str[maxenode];void clear(){sz=1;memset(ch[0],0,sizeof ch[0]);val[0]=0;}int idx(char x){return x-'a';}void insert (char *s,char *a){int u =0,n=strlen(s);for(int i=0;i<n;i++){int id=idx(s[i]);if(ch[u][id]==0){ch[u][id]=sz;val[sz]=0;memset(ch[sz],0,sizeof ch[sz]);sz++;}u=ch[u][id];}val[u]=1;str[u]=a;//strcpy(val[u],a);}string find(char *s){int u=0;int len=strlen(s);for(int i=0;i<len;i++){int id=idx(s[i]);if(ch[u][id]==0)return string("eh");u=ch[u][id];}if(val[u]==0)return string("eh");return str[u];}}trie;char a[20],b[20],s[40];int main(){trie.clear();while(gets(s)){if(strcmp(s,"")==0)break;sscanf(s,"%s%s",a,b);trie.insert(b,a);}while(~scanf("%s",a)){cout<<trie.find(a)<<endl;}}
阅读全文
0 0
- POJ 2503 Babelfish(字典树Trie)
- POJ 2503 Babelfish(字典树Trie)
- Poj 2503 Babelfish//Trie树
- trie树 POJ 2503 Babelfish
- poj 2503 Babelfish(字典树)
- poj 2503 Babelfish 字典树
- poj 2503 Babelfish(字典树)
- POJ 2503 Babelfish(字典树)
- poj-2503-Babelfish-字典树
- poj 2503 Babelfish(字典树)
- POJ 2503 - Babelfish(字典树)
- poj 2503 Babelfish 字典树
- POJ 2503-Babelfish【字典树】
- poj 2503 Babelfish【trie】
- poj 2503 Babelfish Trie
- poj 2503 Babelfish (map,trie 树)
- poj 2503 Babelfish(trie树)
- POJ 2503 Babelfish (Trie树 或 map)
- pdf转换神器,功能全面高质量解决pdf转换问题
- 1076. Forwards on Weibo (30)
- 发送短信工具类(亿美短信平台接口)
- js中的加、减、乘、除(适用于所有场景)
- 《笨办法学python》加分习题29——我的答案
- POJ 2503 Babelfish(字典树Trie)
- Butter Knife 配置及使用入门详解
- ROS人脸检测追踪
- 工作流相关的表及其分类
- 工作流
- spark学习-27-Spark性能调优(2)
- fences 桌面整理,超赞,强烈推荐
- Word_Ladder
- Gym