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

来源:互联网 发布:python turtle安装 编辑:程序博客网 时间:2024/06/15 10:05

Problem Description

随着卫星成像技术的应用,自然资源研究机构可以识别每一个棵树的种类。请编写程序帮助研究人员统计每种树的数量,计算每种树占总数的百分比。

Input

输入一组测试数据。数据的第1行给出一个正整数N (n <= 100000),N表示树的数量;随后N行,每行给出卫星观测到的一棵树的种类名称,树的名称是一个不超过20个字符的字符串,字符串由英文字母和空格组成,不区分大小写。

Output

按字典序输出各种树的种类名称和它占的百分比,中间以空格间隔,小数点后保留两位小数。

Example Input

2This is an Appletreethis is an appletree

Example Output

this is an appletree 100.00%
#include <bits/stdc++.h>using namespace std;struct node{    char str[22];    int cnt;    struct node *l, *r;};int n;struct node *Inster(struct node *Head, char *s){    if(!Head)    {        Head = new node;        Head->cnt = 1;        strcpy(Head->str, s);        Head->l = NULL, Head->r = NULL;    }    else    {        int cmp = strcmp(Head->str,s);        if(cmp > 0)            Head->l = Inster(Head->l, s);        else if(cmp < 0)            Head->r = Inster(Head->r, s);        else            Head->cnt++;    }    return Head;}void Mid(struct node *Head){    if(Head)    {        Mid(Head->l);        printf("%s %.2lf%c\n",Head->str,Head->cnt*100.0/n,'%');        Mid(Head->r);    }}int main(){    struct node *Head = NULL;    char str[22];    scanf("%d\n",&n);    for(int j=0; j<n; j++)    {        gets(str);        for(int i=0; str[i]; i++)        {            if(str[i] >= 'A' && str[i] <= 'Z')                str[i] += 32;        }        Head = Inster(Head,str);    }    Mid(Head);    return 0;}
阅读全文
0 0
原创粉丝点击