数据结构实验之查找三:树的种类统计
2017-12-22 21:24
260 查看
数据结构实验之查找三:树的种类统计
Time Limit: 400MSMemory Limit: 65536KB
Submit
Statistic
Problem Description
随着卫星成像技术的应用,自然资源研究机构可以识别每一个棵树的种类。请编写程序帮助研究人员统计每种树的数量,计算每种树占总数的百分比。Input
输入一组测试数据。数据的第1行给出一个正整数N (n <= 100000),N表示树的数量;随后N行,每行给出卫星观测到的一棵树的种类名称,树的名称是一个不超过20个字符的字符串,字符串由英文字母和空格组成,不区分大小写。Output
按字典序输出各种树的种类名称和它占的百分比,中间以空格间隔,小数点后保留两位小数。Example Input
2 This is an Appletree this is an appletree
Example Output
this is an appletree 100.00%
Hint
Author
xam#include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct node { char str[22]; //记录树的信息 struct node *lc, *rc; int cnt; //记录该树的个数 }*Tree; int n; void creat(Tree &T, char a[]) //插入创建树,与二叉排序树相同,只是结点大小比较是树信息中字符串的比较 { int cmp; if(!T) { T = (Tree)malloc(sizeof(struct node)); T->cnt = 1; strcpy(T->str, a); T->lc = T->rc = NULL; } else { cmp = strcmp(T->str, a); if(cmp>0) creat(T->lc, a); else if(cmp<0) creat(T->rc, a); else T->cnt++; } } void Inorder(Tree T) //按字典序输出 { if(T) { Inorder(T->lc); printf("%s %.2lf%c\n", T->str, T->cnt * 100.0/n, '%'); Inorder(T->rc); } } int main() { int i, j; Tree T; T = NULL; char str[22]; scanf("%d", &n); getchar(); for(j = 1; j<= n; j++) { gets(str); for(i = 0; str[i]!='\0';i++) { if(str[i]>='A'&&str[i]<='Z') str[i] += 32; } creat(T, str); } Inorder(T); return 0; }
相关文章推荐
- 数据结构实验之查找三:树的种类统计
- 数据结构实验之查找三:树的种类统计
- SDUTACM 数据结构实验之查找三:树的种类统计
- SDTU(3375)数据结构实验之查找三:树的种类统计
- 数据结构实验之查找三:树的种类统计
- 3375 数据结构实验之查找三:树的种类统计
- 数据结构实验之查找三:树的种类统计(先排序树再中序遍历)
- 数据结构实验之查找三:树的种类统计
- 数据结构实验之查找三:树的种类统计
- 数据结构实验之查找三:树的种类统计
- 数据结构实验之查找三:树的种类统计 (STL)
- 数据结构实验之查找三:树的种类统计
- 数据结构实验之查找三:树的种类统计 (sdut oj 3375)
- 数据结构实验之查找三:树的种类统计(二叉排序树)
- 数据结构实验之查找三:树的种类统计
- 数据结构实验之查找三:树的种类统计
- 数据结构实验之查找三:树的种类统计
- 数据结构实验之查找三:树的种类统计
- 数据结构实验之查找三:树的种类统计
- 暑假集训 8.12 sdutoj3375 数据结构实验之查找三:树的种类统计 (简单字符排序二叉树)