poj2418(Hardwood Species)
2015-11-02 22:41
351 查看
思路:建立Tire树,dfs一遍,再del下。
// #pragma comment(linker, "/STACK:1024000000,1024000000") #include <iostream> #include <algorithm> #include <iomanip> #include <sstream> #include <string> #include <stack> #include <queue> #include <deque> #include <vector> #include <map> #include <set> #include <stdio.h> #include <string.h> #include <math.h> #include <stdlib.h> #include <limits.h> using namespace std; typedef long long LL; typedef unsigned long long ULL; typedef pair<int,int> ii; // #define DEBUG #ifdef DEBUG #define debug(...) printf( __VA_ARGS__ ) #else #define debug(...) #endif const int inf = 1 << 30; const int INF = 0x3f3f3f3f; const int MOD = 1e9 + 7; struct node{ node* nxt[256]; int cnt; node(){ for (int i = 0;i < 256;i++) nxt[i] = NULL; cnt=0; } }; void insert(node* root,char* s){ node *p = root; int len = strlen(s); for (int i = 0;i < len;i++){ if (p->nxt[s[i]] == NULL) p->nxt[s[i]] = new node(); p = p->nxt[s[i]]; } p->cnt++; } int n; void dfs(node* root){ static char word[31]; static int pos; int i; if (root->cnt){ word[pos] = '\0'; if (word[0]){ printf("%s %.4f\n",word,(double)root->cnt * 100.0/n); } } for (int i = 0;i < 256;i++){ if (root->nxt[i]){ debug("Find %c\n",i); word[pos++] = i; dfs(root->nxt[i]); pos--; debug("Back\n"); } } } void del(node* root){ if (root == NULL) return; for (int i = 0;i < 256;i++){ if (root->nxt[i]) del(root->nxt[i]); } delete root; } int main() { // freopen("in.txt","r",stdin); // freopen("out.txt","w",stdout); char s[1000010]; node* root = new node(); while(gets(s)){ insert(root,s); n++; } dfs(root); del(root); return 0; }
相关文章推荐
- 读后感
- sublime text2 换主题
- 任意进制整数之间的相互转换(C++实现)
- 谈谈:如何避免新入职的程序员痛苦和迷茫?
- 2009-08-11-有缘即住无缘去,一任清风送白云
- HDU4472 Count DP
- java入门程序100例学习笔记(004个人所得税)
- 程序员面试100题之七:最长公共子字符串
- 行为型模式之五——备忘录模式
- informix的数据类型
- 重新考虑容器的存储特性:线序,后进先出,先进先出,无序集合
- 新闻客户端
- winform 分页控件
- iOS UINavigation
- Java动态规划 实现最长公共子序列以及最长公共子字符串
- Java动态规划 实现最长公共子序列以及最长公共子字符串
- 对建立和删除索引的认识
- NSMutableString的几个常用接口
- mysql xtrabackup备份恢复
- 2014-08-22-小絮“中兴跑酷”