暑假集训 8.12 sdutoj3375 数据结构实验之查找三:树的种类统计 (简单字符排序二叉树)
2016-08-12 09:41
274 查看
数据结构实验之查找三:树的种类统计
Time Limit: 400ms Memory limit: 65536K
题目描述
随着卫星成像技术的应用,自然资源研究机构可以识别每一个棵树的种类。请编写程序帮助研究人员统计每种树的数量,计算每种树占总数的百分比。
输入
输入一组测试数据。数据的第1行给出一个正整数N(n <= 100000),N表示树的数量;随后N行,每行给出卫星观测到的一棵树的种类名称,树的名称是一个不超过20个字符的字符串,字符串由英文字母和空格组成,不区分大小写。
输出
按字典序输出各种树的种类名称和它占的百分比,中间以空格间隔,小数点后保留两位小数。
示例输入
2 This is an Appletree this is an appletree
示例输出
this is an appletree 100.00%
排序二叉树在字符数组上的使用 主要利用 strcmp 函数 比较字符数组的ascll ''大小''由此建树
///Accode
#include <bits/stdc++.h> ///get到一个大宝藏(jian) using namespace std; const int maxn=23; int n; typedef struct tree { char name[maxn]; tree *lc,*rc; double num; } tree,*Tree; void Insert(Tree &T,char s[]) ///不多说了.... { if (!T) { T=new tree; strcpy(T->name,s); T->lc=NULL; T->rc=NULL; T->num=1; ///出现过几次 num等于几.... return ; } else if (strcmp(T->name,s) > 0) { Insert(T->lc,s); } else if (strcmp(T->name,s) < 0) { Insert(T->rc,s); } else if (strcmp(T->name,s) == 0) { T->num++; ///相等的话 又出现了一次... num +1 ; } } void midout(Tree &T) { double x; if (T) { midout(T->lc); x=T->num*100/n; printf("%s %.2lf%%\n",T->name,x); midout(T->rc); } } int main() { char s[maxn]; Tree T; cin>>n; getchar(); /// 吃 一下回车 T=NULL; for (int j=1; j<=n; j++) { gets(s); for (int i=0; s[i]; i++) { if (s[i]>='A'&&s[i]<='Z') ///将数组全部转换为 小写... { s[i]+=32; } } Insert(T,s); } midout(T); ///中序打印 就是按照ascll... 字典序打印... return 0; }
///PS:排序二叉树 入门代码
相关文章推荐
- 数据结构实验之查找三:树的种类统计
- 数据结构实验之查找三:树的种类统计
- 数据结构实验之查找三:树的种类统计
- 数据结构实验之查找三:树的种类统计 (sdut oj 3375)
- 数据结构实验之查找三:树的种类统计
- 数据结构实验之查找三:树的种类统计(先排序树再中序遍历)
- SDUT-3375 数据结构实验之查找三:树的种类统计
- SDTU(3375)数据结构实验之查找三:树的种类统计
- 暑假集训 8.16 数据结构实验之排序三:bucket sort (简单的桶排序)
- 数据结构实验之查找三:树的种类统计
- 数据结构实验之查找三:树的种类统计
- 数据结构实验之查找三:树的种类统计
- 数据结构实验之查找三:树的种类统计(二叉排序树)
- 数据结构实验之查找三:树的种类统计
- 数据结构实验之查找三:树的种类统计
- 3375 数据结构实验之查找三:树的种类统计
- SDUTACM 数据结构实验之查找三:树的种类统计
- SDUT 3375 数据结构实验之查找三:树的种类统计
- 数据结构实验之查找三:树的种类统计
- 3375-数据结构实验之查找三:树的种类统计