UVA10815
来源:互联网 发布:简单平面图制作软件 编辑:程序博客网 时间:2024/05/22 02:30
trie树常用于搜索提示。如当输入一个网址,可以自动搜索出可能的选择。当没有完全匹配的搜索结果,可以返回前缀最相似的可能。
/*File Name :10815.cppAuthor : erlingyierCreated Time: 2014年08月26日 星期二 14时27分46秒*/#include <iostream>#include <cstdlib>#include <cstring>#include <cstdio>using namespace std;//Trietypedef struct node1{bool flag;node1 *next[26];}tnode;tnode dict[50000];class Tire{tnode* root;int size;char save[201];public:Tire() {size = 0;root = newnode();}int ID( char ch ) {if ( ch <= 'Z' ) return ch-'A';else return ch-'a';}//构造新节点 tnode* newnode() {for ( int i = 0 ; i < 26 ; ++ i ) dict[size].next[i] = NULL;dict[size].flag = false;return &dict[size ++]; }//单词插入 void insert( char* word, int len ) {tnode *now = root;for ( int i = 0 ; i < len ; ++ i ) {if ( !now->next[ ID(word[i]) ] )now->next[ ID(word[i]) ] = newnode();now = now->next[ ID(word[i]) ];}now->flag = true;}//利用dfs遍历输出 void output( tnode* r, int d ) {if ( r->flag ) {save[d] = 0;puts(save);}for ( int i = 0 ; i < 26 ; ++ i )if ( r->next[i] ) {save[d] = i+'a';output( r->next[i], d+1 );}}void output(){ output(root,0); }};//Tire endint main(){char buf[201],sav[201];Tire tire;while ( gets(buf) ) {int len = strlen(buf);int cou = 0;for ( int i = 0 ; i <= len ; ++ i )if ( (buf[i] >= 'a' && buf[i] <= 'z') || (buf[i] >= 'A' && buf[i] <= 'Z') )sav[cou ++] = buf[i];else if ( cou ) {sav[cou] = 0;tire.insert( sav, cou );cou = 0;}}tire.output();return 0;}
0 0
- uva10815
- UVA10815
- uva10815
- UVA10815
- uva10815
- uva10815
- UVA10815
- uva10815
- UVA10815
- UVa10815
- Uva10815
- ACM-uva10815
- uva10815--没过
- uva10815 分离字符串
- set 集合 uva10815
- uva10815 - Andy's First Dictionary
- UVA10815 Andy's First Dictionary
- UVa10815 - Andy's First Dictionary
- 怎样让多个版本的JDK在系统环境中被不同依赖软件识别
- Socket通信中的多进程编程实例
- 关于NSCalendar 日历的学习记录
- 驱动笔记
- Oracle 10G R2 全版本快速下载地址
- UVA10815
- EBS提供的所有Key Flexfields(KFF)
- 很喜欢的一篇老俞的演讲
- ubuntu建立共享文件夹
- [原创+转载]在本地没有安装mysql数据库的情况下用c++代码实现连接远程mysql数据库
- Tomcat启动时项目重复加载,导致资源初始化两次的问题
- 怎样理解面向对象
- Tomcat设置虚拟目录
- java正则表达式详解