7-24 树种统计(25 分)

来源:互联网 发布:js获取asp控件的值 编辑:程序博客网 时间:2024/05/16 18:51

7-24 树种统计(25 分)

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

输入格式:

输入首先给出正整数N(105),随后N行,每行给出卫星观测到的一棵树的种类名称。种类名称由不超过30个英文字母和空格组成(大小写不区分)。

输出格式:

按字典序递增输出各种树的种类名称及其所占总数的百分比,其间以空格分隔,保留小数点后4位。

输入样例:

29Red AlderAshAspenBasswoodAshBeechYellow BirchAshCherryCottonwoodAshCypressRed ElmGumHackberryWhite OakHickoryPecanHard MapleWhite OakSoft MapleRed OakRed OakWhite OakPoplanSassafrasSycamoreBlack WalnutWillow

输出样例:

Ash 13.7931%Aspen 3.4483%Basswood 3.4483%Beech 3.4483%Black Walnut 3.4483%Cherry 3.4483%Cottonwood 3.4483%Cypress 3.4483%Gum 3.4483%Hackberry 3.4483%Hard Maple 3.4483%Hickory 3.4483%Pecan 3.4483%Poplan 3.4483%Red Alder 3.4483%Red Elm 3.4483%Red Oak 6.8966%Sassafras 3.4483%Soft Maple 3.4483%Sycamore 3.4483%White Oak 10.3448%Willow 3.4483%Yellow Birch 3.4483%

我的代码(解法一):

#include<iostream>#include<string.h>using namespace std;#define MAXN 100000#define MAXS 30typedef struct node{char name[MAXS+1];int cnt;node* lchild;node* rchild;} *Bintree;Bintree insert(Bintree t,char* name){int cmp;if(!t){t=new node;strcpy(t->name ,name);t->cnt =1;t->lchild = t->rchild = NULL;}else{cmp=strcmp(name ,t->name);if(cmp<0)t->lchild = insert(t->lchild ,name);else if(cmp>0)t->rchild = insert(t->rchild ,name);elset->cnt++;}return t;}void output(Bintree t,int n){if(!t)return ;output(t->lchild ,n);printf("%s %.4f%%\n",t->name ,(double)t->cnt/n*100.0);output(t->rchild ,n);}void destroy(Bintree t){if(t){destroy(t->lchild );destroy(t->rchild );delete t;}}int main(){int n,m,i;char name[MAXS+1];Bintree t=NULL;scanf("%d\n",&n);for(i=0;i<n;i++){gets(name);t=insert(t,name);}output(t,n);destroy(t);return 0;}

我的代码(解法二):

#include<iostream>#include<map>#include<set>#include<string>using namespace std;set<string>s;set<string>::iterator it;map<string,int>p;int main(){int n,i;string x;scanf("%d%*c",&n);for(i=0;i<n;i++){getline(cin,x);s.insert(x);p[x]++;}for(it=s.begin();it!=s.end();it++){cout<<*it<<" ";double a=p[*it],b=n;printf("%.4f%%\n",a/b*100);}return 0;}

原创粉丝点击