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

来源:互联网 发布:sql培训学校 编辑:程序博客网 时间:2024/05/22 08:22

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

Time Limit: 400MSMemory Limit: 65536KB
SubmitStatistic

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;int n;struct node{    char data[1001];    int cnt;    struct node *left;    struct node *right;};struct node *Creat(struct node *tree,char *str){    if(!tree)    {        tree=new node;        tree->left=NULL;        tree->right=NULL;        strcpy(tree->data,str);        tree->cnt=1;    }    else    {        int temp=strcmp(tree->data,str);        if(temp>0)            tree->left=Creat(tree->left,str);        else if(temp<0)            tree->right=Creat(tree->right,str);        else            tree->cnt++;    }    return tree;};void Proportion(struct node *tree){    if(tree)    {        Proportion(tree->left);        printf("%s %.2lf%c\n",tree->data,tree->cnt*100.0/n,'%');        Proportion(tree->right);    }}int main(){    struct node *tree=NULL;    char str[1001];    cin>>n;    getchar();    for(int i=0;i<n;i++)    {        gets(str);        for(int j=0;str[j]!='\0';j++)        {            if(str[j]>='A'&&str[j]<='Z')                str[j]+=32;        }        tree=Creat(tree,str);    }    Proportion(tree);    return 0;}


阅读全文
1 0