7-12 树种统计(25 point(s))(BST)
来源:互联网 发布:阿里云空间购买流程 编辑:程序博客网 时间:2024/04/29 19:56
7-12 树种统计(25 point(s))
随着卫星成像技术的应用,自然资源研究机构可以识别每一棵树的种类。请编写程序帮助研究人员统计每种树的数量,计算每种树占总数的百分比。
输入格式:
输入首先给出正整数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%写一个二叉搜索树就可以了,然后中序遍历输出code:
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <math.h>int n;char name[100010][35];struct TNode{//写一个二叉搜索树储存字符串 int time;//记录相同字符串出现的次数 char *name;//记录字符串 struct TNode* Left; struct TNode* Right;//左右指针};typedef struct TNode* Tree;Tree Insert(Tree BST, char s[]){//插入 Tree q; if(BST==NULL){//如果为空,新建节点 q = (Tree)malloc(sizeof(struct TNode)); q->time = 1;//初始化 q->name = s; q->Left = NULL; q->Right = NULL; return q;//返回 } if(strcmp(BST->name,s)<0){//如果要插入的字符串大于当前字符串。插入到右子树 BST->Right = Insert(BST->Right,s); } else if(strcmp(BST->name,s)>0){//如果小,插入左子树 BST->Left = Insert(BST->Left,s); } else{ BST->time++;//如果相等,当前节点次数++ } return BST;//返回树的指针}void inorder(Tree BST){//中序遍历输出字符串同时计算出所占的百分比即可 if(BST!=NULL){ inorder(BST->Left); printf("%s %.4f%%\n",BST->name,(double)BST->time*1.0/(double)n*100); inorder(BST->Right); }}int main(){ int i; scanf("%d",&n); Tree BST = NULL; getchar(); for(i = 0; i < n; i++){ gets(name[i]); BST = Insert(BST,name[i]); } inorder(BST); return 0;}
阅读全文
0 0
- 7-12 树种统计(25 point(s))(BST)
- 7-24 树种统计(25 分)
- 7-24 树种统计(25 分)
- 树种统计(25 分)
- 7-12 树种统计
- 5-12 树种统计 (25分)
- 6-7 Deque(25 point(s))
- 树种统计
- 树种统计
- 树种统计
- 6-20 No Less Than X in BST(20 point(s))
- 5-24 树种统计 (25分)
- 5-24 树种统计 (25分)
- 7-10 树的同构(25 point(s))
- 7-5 银行业务队列简单模拟(25 point(s))
- 7-8 List Leaves(25 point(s))
- 7-10 树的同构(25 point(s))
- 7-14 打印选课学生名单(25 point(s))
- 【人工智能】第三章 通过搜索进行问题求解
- pandas apply vs agg vs transform
- 7-10 树的同构(25 point(s))
- python plot绘制图片+ 最小二乘--y = c*t**lam + 迭代值和迭代精度
- Banner无限轮播
- 7-12 树种统计(25 point(s))(BST)
- Python服务端编程Gevent框架视频教程
- Mybatis学习笔记(十)【订单商品数据模型分析】
- 各种关联关系对象间 添加依赖。代码实现注意:###### 必须先拿到持久态的对象。再对其添加依赖
- 设计模式——组合模式
- STM32F10x_硬件I2C主从通信(轮询发送,中断接收)
- Mybatis学习笔记(十一)【一对一查询】
- 7-13 求链式线性表的倒数第K项(20 point(s))
- 求int型的最大取值(正数)