1、输入若干行树名,输入结束后,按字典序输出树名及其所占百分比。

2、多种方法:map,trie,BST

3、

map:

#include<iostream>
#include<stdio.h>
#include<string>
#include<map>
using namespace std; int main(){
map<string,int>h;
string s;
int n;
n=;
while(getline(cin,s)){
++n;
++h[s];
}
map<string,int>::iterator it;
for(it=h.begin();it!=h.end();++it){
string name=(*it).first;
int k=(*it).second;
printf("%s %.4f\n",name.c_str(),double(k)*/double(n));
}
}

trie:

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
using namespace std; const int MAX=;
char tree[][];//存储不同的树名
int species=;//树的种类数目
int totalNum=;//树的总数目 struct Trie
{
Trie *next[MAX];
int num;//出现次数
};
Trie *root=new Trie; void createTrie(char *str)
{
++totalNum;
int len = strlen(str);
Trie *p = root, *q;
for(int i=; i<len; ++i)
{
int id = str[i];
if(p->next[id] == NULL)
{
q = (Trie *)malloc(sizeof(Trie));
//q = new Trie;
for(int j=; j<MAX; ++j){
q->next[j] = NULL;
q->num=;
}
p->next[id] = q;
}
p = p->next[id];
}
if(p->num==)strcpy(tree[species++],str);
++p->num;
}
int findTrie(char *str)
{
int len = strlen(str);
Trie *p = root;
for(int i=; i<len; ++i)
{
int id = str[i];
p = p->next[id];
if(p == NULL) //若为空集,表示不存以此为前缀的串
return ;
}
return p->num;
}
int cmp(const void *a,const void *b){
return strcmp((char *)a,(char *)b);//升序
}
int main()
{
char str[];
int i;
for(i=; i<MAX; i++){
root->next[i]=NULL;
root->num=;
}
while(gets(str)){
createTrie(str);
}
qsort(tree,species,sizeof(tree[]),cmp);
for(i=;i<species;++i)
printf("%s %.4f\n",tree[i],double(findTrie(tree[i]))/double(totalNum)*);
return ;
}

BST:

POJ - 2418 Hardwood Species(map,trie,BST)的更多相关文章

  1. [字典树] poj 2418 Hardwood Species

    题目链接: id=2418">http://poj.org/problem?id=2418 Hardwood Species Time Limit: 10000MS   Memory ...

  2. [ACM] POJ 2418 Hardwood Species (Trie树或map)

    Hardwood Species Time Limit: 10000MS   Memory Limit: 65536K Total Submissions: 17986   Accepted: 713 ...

  3. POJ 2418 Hardwood Species(STL在map应用)

    职务地址:id=2418">POJ 2418 通过这个题查了大量资料..知道了非常多曾经不知道的东西. . .. 在代码中凝视说明吧. 代码例如以下: #include <ios ...

  4. POJ 2418 Hardwood Species (哈希,%f 和 %lf)

    我的错因: 本来改用%f输出,我用了%lf,结果编译器直接判定为错误(一部分编译器认为lf是没有错的).当时我还以为是hash出错了.. 方法不止一种: 方法 时间   空间 Hash 891ms 5 ...

  5. Hardwood Species(map)

    http://poj.org/problem?id=2418 题意:给定一系列字符串,要求按字典序升序输出每个串,并输出每个串出现的百分比. 用map做的,交c++A了,G++ WA..so sad. ...

  6. POJ 2418 Hardwood Species

                                                     Hardwood Species Time Limit: 10000MS   Memory Limit ...

  7. poj 2418 Hardwood Species (map)

    题目:http://poj.org/problem?id=2418 在poj 上交题总是有各种错误,再次感叹各个编译器. c++ AC代码,G++为超时,上代码: #include<cstdio ...

  8. POJ 2418 Hardwood Species 【Trie树】

    <题目链接> 题目大意: 给你一堆字符串,让你按字典序输出他们出现的频率. 解题分析: 首先,这是Trie数词频统计的题目,以Trie树的边储存字母,节点存储以该节点结尾的链所代表的字符串 ...

  9. 二叉搜索树 POJ 2418 Hardwood Species

    题目传送门 题意:输入一大堆字符串,问字典序输出每个字符串占的百分比 分析:二叉搜索树插入,然后中序遍历就是字典序,这里root 被new出来后要指向NULL,RE好几次.这题暴力sort也是可以过的 ...

随机推荐

  1. POJ 1276 Cash Machine 【DP】

    多重背包的模型,但一开始直接将N个物品一个一个拆,拆成01背包竟然T了!!好吧OI过后多久没看过背包问题了,翻出背包九讲看下才发现还有二进制优化一说........就是将n个物品拆成系数:1,2,4, ...

  2. 【BZOJ1717&POJ3261】Milk Patterns(后缀数组,二分)

    题意:求字符串的可重叠的k次最长重复子串 n<=20000 a[i]<=1000000 思路:后缀数组+二分答案x,根据height分组,每组之间的height>=x 因为可以重叠, ...

  3. 【BZOJ2982】combination(Lucas定理)

    题意:求C(n,m) n,m<=200000000 思路:c(n,m)=c(n mod mo,m mod mo)*c(n div mo,m div mo) mod mo (n>=mo或m& ...

  4. ASP.NET程序开发中经典常用的三十三种代码实例[确实有用]

    原文发布时间为:2008-11-10 -- 来源于本人的百度文章 [由搬家工具导入] ASP.NET程序开发中经典常用的三十三种代码实例:1. 打开新的窗口并传送参数: 传送参数:response.w ...

  5. gcc,gdb基础学习1

    gcc: (1)gcc -O1 -S code.c   这里的-S可以的到code.c的汇编(只进行了预处理和编译这:两个阶段形成 了汇编代码code·s) (2)gcc -c code.c   这里 ...

  6. PHP中的魔术方法【转载】

    __construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, _ ...

  7. SQL SERVER 2012 第三章 使用INSERT语句添加数据

    INSERT [TOP (<expression>) [PERCENT] [INTO] <tabular object>[(column list)][OUTPUT <o ...

  8. Java后端技术书单

    写博客记录技术上使用的各种问题,这个只能算是一个打游击. 如果要把一个知识学透,最有效的方式就是系统学习,而系统学习就是看书,书本上有清晰的学习路线以及相应的技术栈. 下面是我收集的Java后端的技术 ...

  9. Spring中使用Log4j记录日志

    以下内容引用自http://wiki.jikexueyuan.com/project/spring/logging-with-log4j.html: 例子: pom.xml: <project ...

  10. Spring MVC异常处理实例

    以下内容引用自http://wiki.jikexueyuan.com/project/spring/mvc-framework/spring-exception-handling-example.ht ...