hdoj 难题统计--tire
来源:互联网 发布:北大在职研究生 知乎 编辑:程序博客网 时间:2024/05/16 10:10
题目出处:http://acm.hdu.edu.cn/showproblem.php?pid=1251
典型的tire树也是最简单的,直接套模板水过~~~~~~
不知道为什么用scanf老是出错,gets就可以。。。
PS:AC代码:
#include<iostream>using namespace std;#define MAX 26typedef struct TrieNode{ int nCount; struct TrieNode *next[MAX];}TrieNode;//定义结点结构 TrieNode Memory[1000000];int allocp = 0;void InitTrieRoot(TrieNode **pRoot)//初始化tire树 { *pRoot = NULL;}TrieNode *CreateTrieNode()//创建新结点 { int i; TrieNode *p; p = &Memory[allocp++]; p->nCount = 1; for(i = 0 ; i < MAX ; i++) { p->next[i] = NULL; } return p;}void InsertTrie(TrieNode **pRoot , char *s)//插入一个字符串 { int i , k; TrieNode *p; if(!(p = *pRoot)) { p = *pRoot = CreateTrieNode(); } i = 0; while(s[i]) { k = s[i++] - 'a'; //确定branch if(p->next[k]) p->next[k]->nCount++; else p->next[k] = CreateTrieNode(); p = p->next[k]; }}int SearchTrie(TrieNode **pRoot , char *s)//查找一个字符串 { TrieNode *p; int i , k; if(!(p = *pRoot)) { return 0; } i = 0; while(s[i]) { k = s[i++] - 'a'; if(p->next[k] == NULL) return 0; p = p->next[k]; } return p->nCount;} int main(){ char s[15]; TrieNode *Root = NULL; InitTrieRoot(&Root); while(gets(s)&&s[0]) { InsertTrie(&Root , s); } while(gets(s)) { printf("%d\n", SearchTrie(&Root , s)); } return 0;}
- hdoj 难题统计--tire
- HDU1251 统计难题 tire树
- HDU 1251 统计难题(Tire tree)
- HDOJ 统计难题
- HDOJ 1251 统计难题
- hdoj 统计难题
- 统计难题 HDOJ --1251
- hdoj 1251 统计难题
- Hdoj 1251 统计难题
- hdu 1251 统计难题(tire 树 模版题)
- HDOJ 1251 -- 统计难题 Trie
- ACM HDOJ 1251 (统计难题 )
- Hdoj 1251 统计难题 【Hash】
- hdoj-1251-统计难题【map】
- HDOJ 1251 统计难题 (trie)
- HDOJ 1251 统计难题 字典树
- [HDOJ 1251] 统计难题 [字典树]
- HDOJ-1251-统计难题 解题报告
- tomcat 配置默认访问
- java打jar包图片路径问题
- hibernate配置c3p0 连接池
- 一个Linux下C线程池的实现
- shell 学习笔记 ---一个rename脚本
- hdoj 难题统计--tire
- Oracle privilege
- 美欲重启外星人“监听站”
- CSS垂直树形下拉菜单,挺漂亮
- Javascript 刷新框架及页面的方法
- 转义符[全]
- 起航
- Web Services 教程
- thinking in java 笔记(1) 1~10