POJ - 2418 Hardwood Species(map,trie,BST)
2024-08-30 19:24:26
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:
最新文章
- js获取当前坐标
- Linux_LVM_磁盘扩容
- Linux_几个符号命令
- shell脚本 -d 是目录文件,那么-e,-f分别是什么?还有";! -e";这又是什么意思呢?
- Java网络编程总结
- firstElementChild&;&;firstChild
- 函数, lambda表达式
- web项目错误页面友好处理404,500等
- U盘无法安装win10提示Your PC/Device needs to be repaired
- AUTOSAR ArcticCore重构 - for_each_HOH
- BigDecimal 在for循环中相加注意事项
- blinker库
- javax.el.PropertyNotFoundException: Property &#39;XXX&#39; not found on type bean.XXXXX
- 【全网最全的博客美化系列教程】02.添加QQ交谈链接
- JAVA并发编程——守护线程(Daemon Thread)
- go连接mysql
- python 中文件输入输出及os模块对文件系统的操作
- ceph 搭建nginx负载3个对象网关
- Windows-universal-samples学习笔记系列三:Navigation
- openvSwitch 基本命令
热门文章
- 如何解决安装istio后istioctl命令每次使用都需要重新配置路径
- oracle sqlplus 导出csv文件
- python学习笔记--python简介
- [luoguP2831] 愤怒的小鸟(状压DP)
- MTK GPIO 新增变量配置
- Using DTrace to Profile and Debug A C++ Program
- xml文件的schema也是经过jdk编译器编译的,如果xsd没引入完整,而xml中又用到了这些标签,就会编译不通过啊。
- System表空间大小有10Gb,使用率达到95%,
- 还原数据库出现“未获得排他訪问”解决方法(杀死数据库连接的存储过程sqlserver)
- Linux面试题完整修订附加答案