hdu 2072 单词数(Trie树)
来源:互联网 发布:物流单号查询软件 编辑:程序博客网 时间:2024/06/02 03:26
小记:题意要读清啊,不然白费一生啊。 一行一行的读,最后以#结束,每一行输出一个结果
思路:放在trie树 练习题的,当然用trie树来解决,遇到一个单词,先在trie树里找是否有,有就继续看下一个单词,没有就放进trie树,然后单词数加1,
每一行数据都定义一颗trie树,处理完一行后delete之,再读入再创建
代码:
#include <iostream>#include <stdio.h>#include <string.h>#include <math.h>#include <stdlib.h>#include <map>#include <set>#include <vector>#include <stack>#include <queue>#include <algorithm>using namespace std;#define mst(a,b) memset(a,b,sizeof(a))#define eps 10e-8const int MAX_ = 10010;const int MAX = 27;const int N = 100010;const int INF = 0x7fffffff;typedef struct Node{ int isStr; struct Node *next[MAX]; Node():isStr(0){ memset(next, NULL, sizeof(next)); } ~Node(){ for(int i = 0;i < MAX; ++i) if(next[i] != NULL) delete next[i]; }}TrieNode,*Trie;Trie root;void Insert(char *s){ TrieNode *p = root,*q; while(*s){ if(p ->next[*s-'a'] == NULL){ q = new TrieNode; p ->next[*s-'a'] = q; } p = p ->next[*s-'a']; s++; } p->isStr = 1;}int find(char *s){ int i = 0; TrieNode *p=root; while(*s){ if(p->next[*s-'a'] == NULL)return i; p = p->next[*s-'a']; s++; } if(p->isStr)i = 1; return i;}int main() { char s[MAX*10], str[MAX*10]; int ans, cnt, len; bool flag; //ans = 0;flag = false;cnt = 0; while(gets(s)&&s[0]!='#'){ root = new TrieNode; ans = 0;flag = false;cnt = 0;len = strlen(s); for(int i = 0; i < len; ++i){ if(s[i] == ' '&& flag){ str[cnt] = '\0'; if(!find(str)){ Insert(str); ans++; } flag = false; cnt = 0; } if(s[i] != ' '){ flag = true; str[cnt++] = s[i]; } } if(cnt){ str[cnt] = '\0'; if(!find(str)){ Insert(str); ans++; } } printf("%d\n",ans); delete root; }}
0 0
- hdu 2072 单词数(Trie树)
- HDU 2072 - 单词数 (Trie)
- HDOJ-2072单词数(Trie树/MAP)
- hdu-2072-单词数(字典树)
- HDU 2072 单词数
- hdu 2072 单词数
- hdu 2072 单词数
- HDU 2072 单词数
- HDU 2072 单词数
- Hdu 2072 - 单词数
- Hdu 2072 单词数
- hdu 2072-单词数
- hdu 2072 单词数
- HDU 2072 单词数
- HDU 2072 单词数
- HDU 2072 单词数
- hdu 2072 单词数
- hdu 2072 单词数
- ANDROID以流形式上传文件
- iOS开发:block的探究(1)
- 【JavaScript】使用定时器实现Js的延期执行或重复执行setTimeout,setInterval
- java 从jar包中读取资源文件
- UVA 1476
- hdu 2072 单词数(Trie树)
- 协方差矩阵的实例与意义
- 大数据分析,什么样的美女最受男生青睐?
- GPL 协议 详细介绍
- iOS开发:block的探究(2)
- C#调用WebService实例和开发
- 算法基础——1.1暴力破解法(鸡兔同笼、韩信点兵问题)
- 来自一个程序猿前辈的经验总结 拿来分享给大家
- android 学习--Dalvik虚拟机与Java虚拟机