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

来源:互联网 发布:小米note网络制式修改 编辑:程序博客网 时间:2024/06/14 20:33

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<stdio.h>#include<string.h>#include<stdlib.h>#define ERROR -1#define OK 1typedef char Elemtype;typedef struct BiTnode{    Elemtype data[30];    int num;    struct BiTnode *lchild, *rchild;}BiTnode, *BiTree;BiTree Creat(BiTree &T, Elemtype a[]);void Inorder(BiTree T);int m;int main(){    int n, x, i;    char a[30];    scanf("%d\n", &n);    m = n;    BiTree T = NULL;    while(n--)    {        gets(a);        x = strlen(a);        for(i = 0; i < x; i++)        {            if(a[i] >= 'A' && a[i] <= 'Z')                a[i] = a[i] + 32;        }        T = Creat(T, a);    }        Inorder(T);    return 0;}BiTree  Creat(BiTree &T, char a[]){    if(!T)    {        T = (BiTree)malloc(sizeof(BiTnode));        T -> lchild = NULL;        T -> rchild = NULL;        strcpy(T -> data, a);        T -> num = 1;    }    else if(strcmp(T -> data, a) == 0)        T -> num++;    else    {        if(strcmp(T -> data, a) > 0)            Creat(T -> lchild, a);        else            Creat(T-> rchild, a);    }    return T;}void Inorder(BiTree T){    double k;   if(T)   {       Inorder(T -> lchild);       k = (T -> num * 1.0)/(m * 1.0) * 100;       printf("%s %.2lf%%\n", T -> data, k);       Inorder(T -> rchild);   }}


阅读全文
0 0
原创粉丝点击