百度之星预选赛1003字典树模板
来源:互联网 发布:算法导论第四版 pdf 编辑:程序博客网 时间:2024/06/05 07:58
插入,删除和查询所有前缀为s2的字符串
#include<cstdio>#include<cstring>#include<string>#include<iostream>using namespace std;class node{ public: int cnt; node *next[30]; node() { cnt = 0; memset(next,0,sizeof(next)); }}*root;int n;char s1[1000],s2[1000];void release(node *p){ for(int j=0;j<=25;j++) { if(p->next[j]!=NULL) { release(p->next[j]); p->next[j]=NULL; } } delete p;}void insertTire(){ int l = strlen(s2); int i; node *pre = root; for(i=0;i<l;i++) { if(pre->next[s2[i]-'a']==NULL) { node *pre2 = new node; pre->next[s2[i]-'a'] = pre2; pre->cnt++; pre = pre2; } else pre = pre->next[s2[i]-'a']; }}bool findTrie(){ int l = strlen(s2); int i; node *pre = root; for(i=0;i<l;i++) { if(pre->next[s2[i]-'a']==NULL)break; else pre = pre->next[s2[i]-'a']; } if(i==l)return true; else return false;}void deleteTrie(){ int l = strlen(s2); int i,pre4 = -1; node *pre = root,*pre3 = NULL; for(i=0;i<l;i++) { if(pre->next[s2[i]-'a']==NULL)return; else { pre = pre->next[s2[i]-'a']; if(i!=l-1&&pre->cnt>1) { pre3 = pre; pre4 = i; } } } if(pre3==NULL){ pre3 = root; pre4 = -1; } release(pre3->next[s2[pre4+1]-'a']); pre3->next[s2[pre4+1]-'a'] = NULL;}int main(){ scanf("%d",&n); root = new node; while(n--) { scanf("%s%s",s1,s2); if(strcmp(s1,"insert")==0)insertTire(); else if(strcmp(s1,"search")==0) { bool sym = findTrie(); if(sym)printf("Yes\n"); else printf("No\n"); } else deleteTrie(); } release(root); return 0;}
0 0
- 百度之星预选赛1003字典树模板
- HDU 5686 16年百度之星预选赛B
- HDU 5688 16百度之星预选赛D
- 百度之星编程资格赛1003与字典树
- 字典树-百度之星-Xor Sum
- 2016"百度之星" - 资格赛 Problem C 字典树
- 2016-百度之星-资格赛-Problem C【字典树】
- 2014百度之星第三题Xor Sum(字典树+异或运算)
- 2014百度之星资格赛—— Xor Sum(01字典树)
- 2016"百度之星" - 资格赛(Astar Round1)Problem C(字典树)
- hdoj 5687 2016"百度之星" - 资格赛Problem C【字典树--增--删--查】
- HDU-4825 Xor Sum (Trie 字典树 2014年百度之星程序设计大赛-资格赛)
- 字典树 模板
- 字典树【模板】
- 字典树模板
- 字典树模板
- 字典树模板
- 经典字典树模板
- vi文本编辑器
- Docker 安全
- Log4j详细配置
- 安装OS X虚拟机错误vcpu-0
- 带你玩转Visual Studio——VS2015的新功能和特性
- 百度之星预选赛1003字典树模板
- [POJ1083]Moving Tables
- C++:将一元人民币兑换成1、2、5分的硬币,求换法
- 算法导论课后习题部分解答
- android 中动态创建控件
- linux常用命令--管道命令
- 支付宝
- SQLSERVER2008 R2的端口设置
- [Android进阶]Android中使用的观察者模式