UVA 11732 strcmp() Anyone 左兄弟右孩子Trie
来源:互联网 发布:3季度经济数据 编辑:程序博客网 时间:2024/06/04 17:46
/*因为比较函数如上,计算时要注意以下几点: 1.相同长度为L的两个单词比较代价为2L-1,出最后一次外要进行s结束的判断; 2.单词的比较长度应该为strlen(str)+1,结束符也是比较的一环; 3.如果两个单词相同,则多计算一次结束判断,比较次数+1。*/#include <iostream>#include <cstring>#include <queue>#include <stdlib.h>#include <stdio.h>using namespace std;const int MAX=4567890;char words[1010];struct node{ char value; int size; int count; node* leftchild; node* rightchild;};//左兄弟,右孩子node dict[MAX];struct trie{ long long count; int size; node* root; trie() { init(); } void init() { memset(dict,0,sizeof(dict)); size=0; count=0LL; root=newnode(0); } node* newnode(char c) { dict[size].value=c; return &dict[size++]; } void insert(char* word,int L) { node* now=root->rightchild,*save=root; int same=1; for (int i=0;i<=L;i++) { if (!now) { save->rightchild=newnode(word[i]); now=save->rightchild; now->count=1; same=0; } else { if (i) count+=now->count; count+=now->count++; while (now->leftchild&&now->value!=word[i]) now=now->leftchild; if (now->value!=word[i]) { now->leftchild=newnode(word[i]); now=now->leftchild; same=0; } } save=now; now=save->rightchild; } if (same) save->size++; count+=save->size; } long long query() { return count; }};trie t;int main(){ int Case=1,N; while (scanf("%d",&N)!=EOF) { if (!N) break; t.init(); for (int i=0;i<N;i++) { scanf("%s",words); t.insert(words,strlen(words)); } printf("Case %d: %lld\n",Case++,t.query()); } return 0;}
0 0
- UVA 11732 strcmp() Anyone 左兄弟右孩子Trie
- UVA 11732 strcmp() Anyone?(左儿子右兄弟Trie)
- UVA 11732("strcmp()" Anyone?-Trie与左兄弟右儿子)
- 左儿子右兄弟Trie UVA 11732 strcmp() Anyone?
- Uva 11732 "strcmp()" Anyone? 左儿子右兄弟的trie
- UVA 11732 "strcmp()" Anyone? Trie树 + 树的左儿子右兄弟存储法
- uva 11732 "strcmp()" Anyone? (trie+左儿子右兄弟表示法)
- UVA 11732-"strcmp()" Anyone?-trie(左儿子右兄弟表示法(省空间))
- (uva 11732) "strcmp()" Anyone? (trie+左儿子右兄弟表示法)
- UVA 11732 strcmp() Anyone? Trie的左儿子右兄弟表示法
- UVA 11732 "strcmp()" Anyone(字典树+左儿子-右兄弟表示法)
- UVA 11732 strcmp() Anyone (Trie)
- UVA 11732 - strcmp() Anyone?(Trie)
- UVA 11732 strcmp() Anyone? (Trie)
- UVa 11732 strcmp函数 trie树 左儿子右兄弟表示法
- UVA 11732 strcmp() Anyone?(trie)
- UVA 11732 strcmp() Anyone?(字典树Trie)
- UVa 11732 - strcmp() Anyone? (Trie + 邻接表)
- HDU 4117 GRE Words AC自动机+线段树
- LA 3942 Remember the Word Trie树 DP
- Python3 色情图片识别
- 关于Protobuf For Windows下编译问题以及方法
- 一个web应用的诞生--数据存储
- UVA 11732 strcmp() Anyone 左兄弟右孩子Trie
- 图像相似性度量方法
- 静态方法和静态变量 被继承
- Check c/c++ shared library
- 从0开始学习 GitHub 系列之「01.初识 GitHub」
- 1040. Longest Symmetric String (25)
- 一个前端小白的渐进之路
- [BZOJ4419][Shoi2013]发微博
- Git学习笔记02_仓库操作