数据结构实验之查找三:树的种类统计(二叉排序树)

xiaoxiao2021-02-28  102

数据结构实验之查找三:树的种类统计

Time Limit: 400MS Memory Limit: 65536KB Submit Statistic Discuss 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 <string.h> #include <stdlib.h> struct node { char name[30]; int data; struct node *left, *right; }; int t; struct node * Insert(struct node *root, char name[]) { if(!root) { struct node * p = (struct node *)malloc(sizeof(struct node)); strcpy(p->name, name); p->data = 1; p->left = p->right = NULL; root = p; } else { if(strcmp(name, root->name)<0) root->left = Insert(root->left, name); else if(strcmp(name, root->name)>0) root->right = Insert(root->right, name); else root->data++; } return root; } void Show(struct node * root) { if(root) { Show(root->left); printf("%s %.2lf", root->name, root->data*100.0/t); printf("%c\n", '%'); Show(root->right); } } int main() { struct node * root = (struct node *)malloc(sizeof(struct node)); root = NULL; char m[30]; scanf("%d", &t); getchar(); for(int i=1;i<=t;i++) { gets(m); for(int j=0;m[j];j++) { if(m[j]>='A'&&m[j]<='Z') m[j]+= 32; } root = Insert(root, m); } Show(root); return 0; }
转载请注明原文地址: https://www.6miu.com/read-36928.html

最新回复(0)