博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ2418Hardwood Species
阅读量:4938 次
发布时间:2019-06-11

本文共 1410 字,大约阅读时间需要 4 分钟。

题意 : 输入若干个树木品种,里边有的是重复的,让你统计每个品种占输入的总数量的百分比,最后按字典序输出

思路 : 本题数量很大,所以采用直接统计的方式会超时,而采用的方法可以用二叉搜索树,或者用map函数或者是字典树都可以实现,呃,我想说,为什么用G++交WA了,得用C++交才对啊

#include
#include
#include
using namespace std ;struct node{ char name[31] ; struct node *lchild,*rchild ; int count ;//记录该结点品种出现次数}tree ;struct node *root ;int n = 0 ;void mid(struct node *root){ if(root != NULL)//按照中序遍历模式计算输出就是字典序 { mid(root->lchild) ; printf("%s %.4lf\n",root->name,((double)(root->count)/(n*1.0))*100) ; //输出单词和所占百分比 mid(root->rchild); }}void insertBST(struct node **root,char *s){ if(*root == NULL) { struct node *p = (struct node *)malloc(sizeof(tree)); strcpy(p->name,s);//品种复制给新开辟的结点 p->lchild = NULL ; p->rchild = NULL ; p->count = 1 ; *root = p ; } else { if(strcmp(s,(*root)->name) == 0)//出现相同品种 { ((*root)->count)++ ;//该品种数加1,并不再重复插入 return; } else if(strcmp(s,(*root)->name) < 0)//如果插入单词小于当前结点单词 insertBST(&((*root)->lchild),s);//插入当前品种左子树 else insertBST(&((*root)->rchild),s);//否则插入右子树 }}int main(){ char s[31]; while(gets(s)!=NULL) { insertBST(&root,s); n++ ; } mid(root) ; return 0 ;}
View Code

会神用map写的,代码好短....

转载于:https://www.cnblogs.com/luyingfeng/p/3275284.html

你可能感兴趣的文章
nmea协议
查看>>
js 中对象的特性
查看>>
hdoj3714【三分】
查看>>
嵌入式开发入门(4)—驱动入门之时序图分析【20121211修改,未完】
查看>>
Python 使用字符串
查看>>
Quartz Core之CALayer
查看>>
java:一个项目的开发过程(转)
查看>>
express框架学习笔记
查看>>
记录一个css的综合运用
查看>>
操作系统下载路径
查看>>
网站开发 关于图片压缩 以及图片使用
查看>>
hive的count(distinct id)测试--慎用
查看>>
第九周周总结
查看>>
Logistic Regression
查看>>
8lession-基础类型转化
查看>>
FlashCS5作成SWC,在Flex4中使用(1)
查看>>
vue-cli目录结构及说明
查看>>
JS 数据类型转换
查看>>
WeQuant交易策略—RSI
查看>>
osgearth将视点绑定到一个节点上
查看>>