poj2503
来源:互联网 发布:大数据分析需要多少人 编辑:程序博客网 时间:2024/04/27 19:56
题目链接:http://poj.org/problem?id=2503
题意:就像翻译一样,输入一个单词,输出它所对应的一个单词。
解题思路:首先将后面待查询的单词构建成一棵trie树,在结构体中增加一个保存前面单词的一个字符串数组,在插入的时候,把要查询那个单词对应的单词存入数组中,以便在查询的时候,如果查询到就打印出对应的单词,否则打印出”eh”;
代码:
#include<stdio.h>#include<string.h>#include<iostream>using namespace std;const int maxn=201314;struct Tree{ int next[26]; char wei[26];//在对应的树尾上加一个尾巴! void init() { memset(next,-1,sizeof(next)); }} t[maxn];int cur=1;void creat(char ss[],int len,char ci[]){ int p=0; for(int i=0; i<len; i++) { int x=ss[i]-'a'; if(t[p].next[x]==-1) { t[cur].init(); t[p].next[x]=cur++; } p=t[p].next[x]; } strcpy(t[p].wei,ci);}void cha(char ss[]){ int p=0,i=0; while(ss[i]) { int x=ss[i]-'a'; if(t[p].next[x]==-1) { cout<<"eh"<<endl; return ; } p=t[p].next[x]; i++; } cout<<t[p].wei<<endl;}int main(){ t[0].init(); char str1[2013],str2[2014]; while(gets(str1)) { if(!strlen(str1)) break; char qian[2013],hou[2014]; int p=0; while(str1[p]!=' ') { qian[p]=str1[p]; p++;//把前面的单词提取出来! } qian[p]='\0'; int cnt=0; for(int i=p+1; i<strlen(str1); i++) hou[cnt++]=str1[i];//提取后半部分字符串! hou[cnt]='\0'; creat(hou,strlen(hou),qian); } //cout<<"逗比么你是?\n"; while(gets(str2)!=NULL) cha(str2); return 0;}
0 0
- POJ2503
- poj2503
- poj2503
- POJ2503
- poj2503
- poj2503
- poj2503
- poj2503
- poj2503
- poj2503
- poj2503
- poj2503
- poj2503
- poj2503
- poj2503
- POJ2503
- poj2503 hash
- POJ2503 Babelfish
- js数组与 json 的区别
- PMAC数据采集
- 股票历史数据的获取
- Qt连接Sql Server数据库
- Java数组操作
- poj2503
- 网站建设需做的工作,你知道吗?
- 纯CSS实现箭头
- android studio创建一个工程时候报错
- XCode升级后插件失效的原理与修复办法
- Cloudera Manager 5 和 CDH5 本地(离线)安装指南
- OpenStack通过ISO创建虚拟和镜像
- LeetCode63:Unique Paths II
- 牛人博客