POJ - 2418 Hardwood Species(map,trie,BST)
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)的更多相关文章
- [字典树] poj 2418 Hardwood Species
题目链接: id=2418">http://poj.org/problem?id=2418 Hardwood Species Time Limit: 10000MS Memory ...
- [ACM] POJ 2418 Hardwood Species (Trie树或map)
Hardwood Species Time Limit: 10000MS Memory Limit: 65536K Total Submissions: 17986 Accepted: 713 ...
- POJ 2418 Hardwood Species(STL在map应用)
职务地址:id=2418">POJ 2418 通过这个题查了大量资料..知道了非常多曾经不知道的东西. . .. 在代码中凝视说明吧. 代码例如以下: #include <ios ...
- POJ 2418 Hardwood Species (哈希,%f 和 %lf)
我的错因: 本来改用%f输出,我用了%lf,结果编译器直接判定为错误(一部分编译器认为lf是没有错的).当时我还以为是hash出错了.. 方法不止一种: 方法 时间 空间 Hash 891ms 5 ...
- Hardwood Species(map)
http://poj.org/problem?id=2418 题意:给定一系列字符串,要求按字典序升序输出每个串,并输出每个串出现的百分比. 用map做的,交c++A了,G++ WA..so sad. ...
- POJ 2418 Hardwood Species
Hardwood Species Time Limit: 10000MS Memory Limit ...
- poj 2418 Hardwood Species (map)
题目:http://poj.org/problem?id=2418 在poj 上交题总是有各种错误,再次感叹各个编译器. c++ AC代码,G++为超时,上代码: #include<cstdio ...
- POJ 2418 Hardwood Species 【Trie树】
<题目链接> 题目大意: 给你一堆字符串,让你按字典序输出他们出现的频率. 解题分析: 首先,这是Trie数词频统计的题目,以Trie树的边储存字母,节点存储以该节点结尾的链所代表的字符串 ...
- 二叉搜索树 POJ 2418 Hardwood Species
题目传送门 题意:输入一大堆字符串,问字典序输出每个字符串占的百分比 分析:二叉搜索树插入,然后中序遍历就是字典序,这里root 被new出来后要指向NULL,RE好几次.这题暴力sort也是可以过的 ...
随机推荐
- ubunt设置终端快捷键设置 及 常用快捷键
Ctrl+A:将光标移动到命令行的开始处. Ctrl+E:将光标移动到命行令的结尾处. Ctrl+U:删除行首到光标出的字符. Ctrl+Z:把当前进程送到后台处理. & bg 部分快 ...
- 大数据学习——flume日志分类采集汇总
1. 案例场景 A.B两台日志服务机器实时生产日志主要类型为access.log.nginx.log.web.log 现在要求: 把A.B 机器中的access.log.nginx.log.web.l ...
- 人生第一场CTF的解题报告(部分)
解题报告 濮元杰部分: 王者归来: 120 场景 小王入职了一段时间,最近有点无聊.Web安全项目不多,白天看着其他项目组的同事忙得热火朝天,小王有点坐不住了,这也许是新人都会有的想法,乐于助人.想到 ...
- idea与eclipse项目相互导入的过程
idea项目导出到桌面 很简单,直接去项目所在目录考出即可,但是考出的项目往往都特别大,这是因为考出之前 我们不要忘记把idea的输出目录删除 每次启动服务器运行idea项目的时候 都会有一个输出 ...
- Flex使用cookie保存登状态
flex系统要实现普通html系统刷新页面保留登录信息,一个方法是借用js来操作cookie来实现,下边是一个实现的例子: 第一步:在主index.html里边加上两个js方法 //获取cookie内 ...
- solr相关文章
Solr集群架构概述及delta-import详细配置 背景 由于项目原因,重新熟悉了下Solr,版本为3.6,搭建了主从Solr服务,并使用DIH从RDBMS数据源增量更新索引. 其实也没什么技术含 ...
- 学习日常笔记<day13>jsp加强
1.jsp的内置对象(重点) 1.1什么是内置对象? 在jsp开发中,会频繁使用到一些现象 例如HttpSession,ServletContext,ServletContext,HttpServle ...
- 转: ORACLE存储过程笔记3----流程控制
流程控制 1.条件 if expression thenpl/sql or sqlend if; if expression thenpl/sql or sqlelsif expression ...
- asp.net core 集成JWT(一)
[什么是JWT] JSON Web Token(JWT)是目前最流行的跨域身份验证解决方案. JWT的官网地址:https://jwt.io/ 通俗地来讲,JWT是能代表用户身份的令牌,可以使用JWT ...
- java quartz的使用,做时间轮询调用 CronTrigger
import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionExceptio ...