POJ 2001 Trie 字典树
来源:互联网 发布:淘宝店铺推广方法 编辑:程序博客网 时间:2024/05/17 23:44
本身写链表就不是很强,搞acm就是这样,一点点不知道,模棱两可的话 自己是写不出代码的!一定是要对这个算法熟悉了,才能写出来,对于链表尤其是这样!不然对链表进行next操作和当前节点赋值操作的时候都会出问题!这里建了一棵字典树,26插树????用尾插发写的。这几天一直在看专业书,A题比较少。另外这题真的加深了我对树形结构与指针的使用。感觉很不错,对链表的操作过程,感觉要形象的理解才能做出来,不然就会错的~~~
这个树形结构要注意的就是next与赋值语句的过程,要知道自己的赋值到底是赋值在哪里了。
由于root节点是空的。所以每次都是先next到下一个节点再进行标记修改的工作。从根节点出发先next不就到了第一个字符的位置吗?! 然后对第一个字符的标记进行修改。另外呢赋值新点的话,吧尾指针修改成新的节点就好了,然后对标记进行修改。输出也是能够下去再输出!
代码的可读性应该还不错:
#include<iostream>#define MAXN 27#define MAXL 1005using namespace std;struct Node{ int flag; Node *next[MAXN];}node[MAXN*MAXL];int nodeNum=0;Node *root=&node[nodeNum++];void insert_tree( char *str ){ int i,j,len; Node *tail=root; Node *pre; len=strlen( str ); for( i=0;i<len;i++ ) { j=str[i]-'a'; if( tail->next[j]!=NULL ) { tail=tail->next[j]; tail->flag++; } else { pre=&node[nodeNum++]; pre->flag=1; tail->next[j]=pre; tail=pre; } printf( "%d ",tail->flag ); }}int main(){ //freopen( "out.txt","w",stdout ); int lineNum=-1; //nodeNum=0;//!!!!!! char str[MAXL][MAXN]; while( scanf( "%s",str[++lineNum] )!=EOF ) insert_tree( str[lineNum] ); int i,j,at; for( i=0;i<lineNum;i++ ) { Node *tail=root; printf( "%s ",str[i] ); int len=strlen( str[i] ); for( j=0;j<len;j++ ) { at=str[i][j]-'a'; tail=tail->next[at]; printf( "%c",str[i][j] ); if( tail->flag==1 ) break; } printf( "\n" ); } //system( "pause" ); return 0;}
- POJ 2001 Trie 字典树
- POJ 2001 trie字典树
- POJ-2001(trie字典树)
- Trie 字典树 poj 2001 示例
- Trie 字典树 poj 2001 示例
- POJ 2001 Shortest Prefixes 字典树Trie
- POJ 2001 Shortest Prefixes(字典树Trie)
- POJ 2001 Shortest Prefixes(字典树Trie)
- trie 字典树 POJ 2513
- POJ 2001 Shortest Prefixes 【 trie树(别名字典树)】
- POJ 2001 Shortest Prefixes (字典树 TRIE)
- POJ 1056 IMMEDIATEDECODABILITY(字典树Trie)
- POJ 2503 Babelfish(字典树Trie)
- POJ 2503 Babelfish(字典树Trie)
- POJ 2001 Trie树
- poj 2001 trie 树
- poj 2001 Trie树
- POJ 2001 Shortest Prefixes 数据结构Trie树(字典树、前缀树)
- 标准输入cin的返回值以及while(cin>>x)的问题
- android 4.0 sdk
- MyEclipse搞定hibernate的web应用
- PHP五虎将
- xsl:variable/xsl:param
- POJ 2001 Trie 字典树
- CR, LF, CR/LF 回车 换行 转自船长日志
- c++学习札记(七)--查找对象算法
- linux系统文件目录概述
- c++——chap04
- 《编程之美: 求二叉树中节点的最大距离》的另一个解法(转)
- ASP.NET弹出对话框几种基本方法
- 【最大子序列和】解题报告
- 帮帮忙,到底怎么了