数据结构实验之查找三:树的种类统计
2016-08-11 17:19
295 查看
数据结构实验之查找三:树的种类统计
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%
提示:把这一串字符看做一个数字,将字典序看做数字的升序,建排序树是升序,而排序树的中序遍历则是升序的输出,一样的数字就num++;这样就简单明了多了;
来源
xam
示例程序
#include <stdio.h> #include <stdlib.h> #include <string.h> int n; typedef char element; typedef struct BiTnNode { element data[22]; int num;//标记此数字(字符串)的出现次数; BiTnNode *lchild,*rchild; }BiTnNode, *BiTree; void CreateTree(BiTree &T,char *key)//插入建排序树; { if(T==NULL) { T=new BiTnNode; T->num=1; strcpy(T->data,key); T->lchild=T->rchild=NULL; } else { if(strcmp(key,T->data)<0) { CreateTree(T->lchild,key); } else if(strcmp(key,T->data)>0) { CreateTree(T->rchild,key); } else { T->num++; } } } void InOrder(BiTree T) { if(T) { InOrder(T->lchild); printf("%s %.2lf%c\n",T->data,100.0*T->num/n,'%'); InOrder(T->rchild); } } int main() { int i; char a[22]; BiTree T; T=NULL; scanf("%d",&n); getchar(); for(i=0;i<n;i++) { gets(a); int l=strlen(a); for(int j=0;j<l;j++)//统一化处理 { if(a[j]>='A'&&a[j]<='Z') a[j]=a[j]+32; } CreateTree(T,a);///插入一个数字(字符串); } InOrder(T); return 0; }
相关文章推荐
- 数据结构实验之查找三:树的种类统计
- 数据结构实验之查找三:树的种类统计 (sdut oj 3375)
- 数据结构实验之查找三:树的种类统计
- 数据结构实验之查找三:树的种类统计(二叉排序树)
- 暑假集训 8.12 sdutoj3375 数据结构实验之查找三:树的种类统计 (简单字符排序二叉树)
- 数据结构实验之查找三:树的种类统计 (STL)
- 数据结构实验之查找三:树的种类统计
- SDUT OJ 数据结构实验之查找三:树的种类统计
- SDUT 3375 数据结构实验之查找三:树的种类统计
- 3375 数据结构实验之查找三:树的种类统计
- 数据结构实验之查找三:树的种类统计
- 数据结构实验之查找三:树的种类统计
- 数据结构实验之查找三:树的种类统计
- 数据结构实验之查找三:树的种类统计
- 数据结构实验之查找三:树的种类统计
- 数据结构实验之查找三:树的种类统计
- 数据结构实验之查找三:树的种类统计
- 数据结构实验之查找三:树的种类统计
- 数据结构实验之查找三:树的种类统计
- 数据结构实验之查找三:树的种类统计