luogu 3907 :Trie 树板子(dalao勿看,水的辣眼睛)
来源:互联网 发布:大逃杀游戏知乎 编辑:程序博客网 时间:2024/05/16 07:45
题意:给出N(<=10000)个单词,单词长度小于等于20。在给出一个串T,要求按照字典序输出所有输入串中以T为前缀的串。注意同相同的串可能有多个。
题解:对N个串造一个Trie树,然后拿着T在树上跑,如果T串失败了,那么直接退出。T匹配到了某个Node,然后从这个Node开始DFS就可以了。
Code:
#include<bits/stdc++.h>using namespace std;const int MAX = 1000;char buff[MAX],delta[MAX];struct Trie_Node{Trie_Node * nxt[26];int exist;};Trie_Node * root;Trie_Node * Trie_Create(){Trie_Node * node =(Trie_Node*)(malloc(sizeof(Trie_Node)));node->exist = false;memset(node->nxt,0,sizeof(node->nxt));return node; } void Trie_Insert(Trie_Node * root,char * word){Trie_Node * node = root;char * p = word;while (*p){int id = *p -'a';if (node->nxt[id]==NULL){node->nxt[id] = Trie_Create();}node = node->nxt[id];p++;} node->exist++;}void Trie_Dfs(Trie_Node * node,int length){for (int i=0;i<(node->exist);i++){printf("%s",buff);delta[length] ='\0';printf("%s\n",delta);}for (int i=0;i<=25;i++){if (node->nxt[i]!=NULL){delta[length] = i+'a';Trie_Dfs(node->nxt[i],length+1);}} }void Trie_Search(Trie_Node * root,char * word){Trie_Node* node = root;char * p = word;while (*p){int id = *p-'a';node = node->nxt[id];if (node==NULL){return;}p++;}Trie_Dfs(node,0);}int main(){root = Trie_Create();int n;scanf("%d\n",&n);while (n--){scanf("%s",buff);Trie_Insert(root,buff);}scanf("%s",buff);Trie_Search(root,buff);return 0;}
阅读全文
0 0
- luogu 3907 :Trie 树板子(dalao勿看,水的辣眼睛)
- trie树+AC自动机板子
- codeforces 710F Trie树+kmp Trie树板子和kmp板子
- dalao的博客
- 一些dalao的模板
- dalao的tajan模板
- 挂一波Dalao的代码
- 与dalao学校的联hu测zuo(10.26)
- 与dalao学校的联hu考ce(10.27)
- 电影--用别人的眼睛看世界
- 看电脑眼睛不酸不胀的好方法!!
- 看电脑眼睛不酸不胀的好方法
- 看电脑眼睛不酸不胀的妙招!
- 透过程序员的眼睛看计算机结构
- 看电脑眼睛不酸不胀的好方法
- 看数据结构写代码(60 ) 键树的多重链表表示(Trie树)
- 微博的背后有只眼睛在看着你(一)
- Trie树trie(前缀)
- c++导出类的简单实现
- java 图片合成
- springCloud(四)
- 特征选择
- 1037. 在霍格沃茨找零钱(20)
- luogu 3907 :Trie 树板子(dalao勿看,水的辣眼睛)
- [数据库与SQL]
- java语言的自增++和自减--
- Android使用TextView实现跑马灯效果
- 谷歌发布 TensorFlow Serving
- ubuntu docker 开启ssh
- 首页实现_头部搜索框
- (OK) 编译内核及移植MPTCP过程
- bfs 警察抓小偷