HDOJ-2072单词数(Trie树/MAP)
来源:互联网 发布:淘宝更改类目在哪里 编辑:程序博客网 时间:2024/06/07 12:37
Trie树专题,就不用MAP写了。一开始WA了几次,是因为”asdf as a“这种情况处理错了,一个单词插入完毕后,要判断最后一个字母所在位置是否为已经存在的单词的结尾。
#include <cstdio>#include <cstdlib>#include <cstring>#include <string>#include <iostream>#define MAXN 26using namespace std;typedef struct Trie{ int next[MAXN]; int cnt; bool tail;};int tot;Trie f[280000];void TrieInit(){ int i; tot=MAXN; memset(f,0,sizeof(f)); for(i=0;i<MAXN;i++) f[0].next[i]=i+1;}int Insert(string s){ int i,j,k,l,flag; l=s.length(); flag=0; k=0; for(i=0;i<l;i++) { if(f[k].next[s[i]-'a']!=0) { k=f[k].next[s[i]-'a']; if(i==l-1) { if(f[k].tail==0) flag=1; f[k].tail=1; } f[k].cnt++; } else { tot++; f[k].next[s[i]-'a']=tot; k=tot; if(i==l-1) { flag=1; f[k].tail=1; } f[k].cnt++; } } return flag;}int main(){ int i,j,k,t,m,n,ans; string s; while(getline(cin,s)&&s!="#") { string str; TrieInit(); ans=0; for(i=0;i<=s.length();i++) { if(s[i]!=' '&& i!=s.length()) str+=s[i]; else { ans+=Insert(str); str=""; } } printf("%d\n",ans); } return 0;}
0 0
- HDOJ-2072单词数(Trie树/MAP)
- hdoj 2072 单词数 (map)
- hdu 2072 单词数(Trie树)
- HDOJ 2072 单词数(字符串,map)
- HDU 2072 - 单词数 (Trie)
- HDOJ 2072 单词数(map的简单题)
- hdoj 2072 单词数
- hdoj 2072 单词数
- HDoj-2072-单词数
- HDOJ 2072 单词数
- hdoj 2072 单词数
- HDOJ 2072 单词数
- HDOJ 2072 单词数
- HDU 2072 单词数 (STL map)
- HDU 2072 单词数 (map)
- HDOJ 2072 单词数 (set)
- hdoj.2072 单词数 20140722
- HDOJ 2072 单词数【字符串】
- linux平台学x86汇编(九):循环指令
- 二次开发更专业又好用的婚恋会员管理系统
- Android:输出日志信息
- mas短信机webvice发送与回执
- hdu 1869 六度分离 Floyd
- HDOJ-2072单词数(Trie树/MAP)
- linux平台学x86汇编(十):整数运算
- opencv基础知识总结
- 栈的应用之进制转化
- 《乌云背后的幸福线》
- PHP编码规范之PSR-3
- 第九周 课后实践:项目三——分数类中的运算符重载(续)
- 前端测试系列---必不可少的fiddler工具
- 求冒号对齐的方法