hdu2072 单词数(字典树)
来源:互联网 发布:淘宝350装修模板 编辑:程序博客网 时间:2024/06/06 03:10
这题因为输入WA了N次,全是泪。
注意字符串前面有空格的情况,输入方法还是看的别人的。
最重要的一点,这题只是通过统计某单词是否出现来统计不同单词字数,切记要把p -> sum ++;放在外面,放在里面就不行。理论上来说也可以啊,最底层的字母sum都是0,可是就是WA,实在没辙,放for外面好了。
#include <stdio.h>#include <algorithm>#include <stdlib.h>#include <string.h>#include <iostream>using namespace std;typedef long long LL;const int N = 1000005;const int INF = 1e8;struct Trie{ int sum; Trie *next[26]; Trie() { sum = 0; for(int i = 0; i < 26; i ++) next[i] = 0; }}*root;int ans;void inserttrie(Trie *p, char *str){ int k = 0; while(str[k] != '\0') { int id = str[k] - 'a'; if(p -> next[id] == 0) { p -> next[id] = new Trie; } p = p -> next[id]; k ++; } if(p -> sum == 0) ans ++; p -> sum ++;//该单词是否出现过,注意放在外面}void Free(Trie *p){ for(int i = 0; i < 26; i ++) if(p -> next[i]) Free(p -> next[i]); if(p) delete p;}int main(){ // freopen("in.txt", "r", stdin); char s[N], s0[1005]; while(gets(s)) { ans = 0; root = new Trie; if(s[0] == '#') break; int len = strlen(s); int j = 0; for(int i = 0; i < len; i ++) { while(s[i ++] == ' '); i --; if(i >= len) break; int j = 0; while(s[i] != ' ' && i < len) s0[j ++] = s[i ++]; s0[j] = '\0'; inserttrie(root, s0); } printf("%d\n", ans); Free(root); } return 0;}
0 0
- hdu2072 单词数(字典树)
- 单词数(hdu2072字典树)
- hdu2072单词数 字典树做法
- hdu2072-单词数 字典树、STL
- HDU2072 单词数(解法二)
- hdu2072—单词数(set)
- hdu2072(不同单词数)
- 单词数,hdu2072
- HDU2072:单词数
- HDU2072:单词数
- HDU2072 单词数
- HDU2072 单词数
- hdu2072 单词数
- hdu2072 单词数
- HDU2072 单词数
- 【字符串】HDU2072单词数
- HDU2072 单词数
- hdu2072 单词数
- 集成容器管理工具Kubernetes,CloudStack打通任督二脉
- 给颜色添加透明度
- 安卓自定义Notification包含进度条时遇到的问题
- 离散型工厂如何改造为智能工厂?
- 回声消除算法研究
- hdu2072 单词数(字典树)
- 第八周项目四—游戏中的角色类
- 利用openssl进行RSA签名
- 手机游戏运行时分析工具
- java.lang.IllegalStateException: Fragment(XXFragment) not attached to Activity异常
- JavaScript 匿名函数、模块模式、闭包、命名空间、创建构造器(类)、继承
- Android View体系(九)自定义View
- LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- Java并发编程:进程和线程之由来