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

来源:互联网 发布:阿里云服务器免流教程 编辑:程序博客网 时间:2024/06/18 05:27

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

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;char a[35];int n;struct Tree{    char data[35];    int num;      //记录该字符串出现的次数    Tree *lchild, *rchild;};Tree *Creat(Tree *T){    if(!T){        T = new Tree;        T->lchild = NULL;        T->rchild = NULL;        T->num = 1;        strcpy(T->data, a);    }    else{        if(strcmp(a, T->data) == 0)            T->num++;        else if(strcmp(a, T->data)<0)            T->lchild = Creat(T->lchild);        else            T->rchild = Creat(T->rchild);    }    return T;}void Inorder(Tree *T){    if(T){        Inorder(T->lchild);        printf("%s %.2lf%%\n", T->data,(1.0*T->num*100)/n);                    //注意在printf里百分号也要使用%%转义          Inorder(T->rchild);    }}int main(){    Tree *T =NULL;    cin>>n;    getchar();       //吞掉一个换行     for(int k=0; k<n; k++){        gets(a);              //gets()以Enter结束输入(空格不结束),接受空格,会舍弃最后的回车符!          int len = strlen(a);        for(int i=0; i<len; i++)            a[i] = tolower(a[i]);      //大写字母转化为小写字母的函数        T = Creat(T);    }    Inorder(T);    return 0;}



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