5-12 树种统计 (25分)
2016-03-27 11:27
393 查看
随着卫星成像技术的应用,自然资源研究机构可以识别每一棵树的种类。请编写程序帮助研究人员统计每种树的数量,计算每种树占总数的百分比。
输入格式:
输入首先给出正整数N(\le 10^5≤10
5
),随后N行,每行给出卫星观测到的一棵树的种类名称。种类名称由不超过30个英文字母和空格组成(大小写不区分)。
输出格式:
按字典序递增输出各种树的种类名称及其所占总数的百分比,其间以空格分隔,保留小数点后4位。
输入样例:
29
Red Alder
Ash
Aspen
Basswood
Ash
Beech
Yellow Birch
Ash
Cherry
Cottonwood
Ash
Cypress
Red Elm
Gum
Hackberry
White Oak
Hickory
Pecan
Hard Maple
White Oak
Soft Maple
Red Oak
Red Oak
White Oak
Poplan
Sassafras
Sycamore
Black Walnut
Willow
输出样例:
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%
输入格式:
输入首先给出正整数N(\le 10^5≤10
5
),随后N行,每行给出卫星观测到的一棵树的种类名称。种类名称由不超过30个英文字母和空格组成(大小写不区分)。
输出格式:
按字典序递增输出各种树的种类名称及其所占总数的百分比,其间以空格分隔,保留小数点后4位。
输入样例:
29
Red Alder
Ash
Aspen
Basswood
Ash
Beech
Yellow Birch
Ash
Cherry
Cottonwood
Ash
Cypress
Red Elm
Gum
Hackberry
White Oak
Hickory
Pecan
Hard Maple
White Oak
Soft Maple
Red Oak
Red Oak
White Oak
Poplan
Sassafras
Sycamore
Black Walnut
Willow
输出样例:
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<stdio.h> #include<stdlib.h> #include<string.h> typedef struct Node *BTree; struct Node{ char Data[30]; double Rate; BTree Left; BTree Right; }; void InstorderTraversal(BTree BT,int N); BTree Insert(BTree BT,char *X); int main(){ BTree BT; BT=NULL; int i,N; char X[30]; scanf("%d",&N); getchar(); for(i=0;i<N;i++){ gets(X); BT=Insert(BT,X); } InstorderTraversal(BT,N); return 0; } BTree Insert(BTree BT,char *X){ if(!BT){ BT=(BTree)malloc(sizeof(struct Node)); strcpy(BT->Data,X); BT->Rate=1; BT->Left=NULL; BT->Right=NULL; return BT; } if(strcmp(BT->Data,X)>0){ // printf("!%s***\n",X); BT->Left=Insert(BT->Left,X); } if(strcmp(BT->Data,X)<0){ // printf("!%s##\n",X); BT->Right=Insert(BT->Right,X); } if(strcmp(BT->Data,X)==0){ BT->Rate++; return BT; } return BT; } void InstorderTraversal( BTree BT,int N ){ if(!BT)return ; if((BT->Left==NULL)&&(BT->Right==NULL)){ printf("%s %.4lf%%\n",BT->Data,(BT->Rate/N)*100); return ; } InstorderTraversal(BT->Left,N); printf("%s %.4lf%%\n",BT->Data,(BT->Rate/N)*100); InstorderTraversal(BT->Right,N); return ; }
相关文章推荐
- 高性能Mysql主从架构的复制原理及配置详解
- 2.9-php使用Redis存储
- 2.8-键值和服务器命令
- 什么是C++虚函数、虚函数的作用和使用方法
- 筛素数法
- 注解_Annotation_内置注解_自定义注解_反射机制读取注解JAVA208-210
- Hive On Spark和SparkSQL
- 流程控制
- Spring中的一个错误:使用Resources时报错(The annotation @Resources is disallowed for this location)
- mysql5.5 对触发器,函数,存储引擎,事件进行主从复制情况.(转)
- Educational Codeforces Round 10 D Nested Segments
- 2.7-zset类型常用命令
- ExtJs学习基础知识
- ASP.NET MVC Layout如何嵌套
- 2.6-set类型常用命令
- hdoj-1061-Rightmost Digit
- 文章标题
- 2.5-list类型常用命令
- google ===最新hosts文件(亲测)
- 【Unity3D游戏开发】WWW工具类简单的HTTP访问 (三四)