SDUT-3375_数据结构实验之查找三:树的种类统计
数据结构实验之查找三:树的种类统计
Time Limit: 400 ms Memory Limit: 65536 KiB
Problem Description
随着卫星成像技术的应用,自然资源研究机构可以识别每一个棵树的种类。请编写程序帮助研究人员统计每种树的数量,计算每种树占总数的百分比。
Input
输入一组测试数据。数据的第1行给出一个正整数N (n <= 100000),N表示树的数量;随后N行,每行给出卫星观测到的一棵树的种类名称,树的名称是一个不超过20个字符的字符串,字符串由英文字母和空格组成,不区分大小写。
Output
按字典序输出各种树的种类名称和它占的百分比,中间以空格间隔,小数点后保留两位小数。
Sample Input
2
This is an Appletree
this is an appletree
Sample Output
this is an appletree 100.00%
题解:数据量比较大,需要用到字典树。
字典树跟排序树类似,根据字符串的字典序进行的排序
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char s[25];
typedef struct node
{
char s[25];
int num;
struct node *l,*r;
}node;
node *newNode()
{
node *t;
t = (node *)malloc(sizeof(node));
t->l = t->r = NULL;
return t;
}
node * build(node *t)
{
if(t!=NULL)
{
if(strcmp(t->s,s)==0)
t->num ++;
else if(strcmp(t->s,s)<0)
t->r = build(t->r);
else if(strcmp(t->s,s)>0)
t->l = build(t->l);
return t;
}
t = newNode();
strcpy(t->s,s);
t->l = NULL;
t->r = NULL;
t->num = 1;
return t;
}
void show(node *t,int n)
{
if(t)
{
show(t->l,n);
printf("%s ",t->s);
printf("%.2f%%\n",1.0*t->num/n*100);
show(t->r,n);
}
}
void del(node *t)
{
if(t)
{
del(t->r);
del(t->l);
free(t);
}
}
int main()
{
int n,i,j;
node *t;
scanf("%d",&n);
t = NULL;
getchar();
for(i=0;i<n;i++)
{
gets(s);
int len = strlen(s);
for(j=0;j<len;j++)
if(s[j]>='A'&&s[j]<='Z')
s[j] = s[j] - 'A' + 'a';
//cout<<s<<endl;
t = build(t);
//printf("%d\n",t->num);
}
show(t,n);
del(t);
return 0;
}
SDUT-3375_数据结构实验之查找三:树的种类统计的更多相关文章
- SDUT 3375 数据结构实验之查找三:树的种类统计
数据结构实验之查找三:树的种类统计 Time Limit: 400MS Memory Limit: 65536KB Submit Statistic Problem Description 随着卫星成 ...
- SDUT 3374 数据结构实验之查找二:平衡二叉树
数据结构实验之查找二:平衡二叉树 Time Limit: 400MS Memory Limit: 65536KB Submit Statistic Problem Description 根据给定的输 ...
- SDUT 3311 数据结构实验之串三:KMP应用
数据结构实验之串三:KMP应用 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 有n个小朋友 ...
- SDUT 3347 数据结构实验之数组三:快速转置
数据结构实验之数组三:快速转置 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 转置运算是一 ...
- SDUT OJ 数据结构实验之二叉树三:统计叶子数
数据结构实验之二叉树三:统计叶子数 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descr ...
- SDUT OJ 数据结构实验之串三:KMP应用
数据结构实验之串三:KMP应用 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...
- SDUT OJ 数据结构实验之排序三:bucket sort
数据结构实验之排序三:bucket sort Time Limit: 250 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem D ...
- SDUT OJ 数据结构实验之链表三:链表的逆置
数据结构实验之链表三:链表的逆置 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descri ...
- SDUT 3400 数据结构实验之排序三:bucket sort
数据结构实验之排序三:bucket sort Time Limit: 150MS Memory Limit: 65536KB Submit Statistic Problem Description ...
随机推荐
- CentOS设置打开终端快捷键
- 桥接模式(Bridge、Implementor)(具体不同平台日志记录,抽象与实现分离)
桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化.它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式 ...
- ImportError: No module named 'pycocotools'
错误原因很简单,就是缺少了pycocotools这个包,首先你需要pip install pycocotools,看少了什么包没安装,我这里少了Cython 于是我又安装了Cython,然后再安装py ...
- 解决JSP调用JavaBean出现乱码问题
解决JSP调用JavaBean出现乱码问题 话不多说放代码 144 Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE /* Style D ...
- Opencv中的阈值函数
OpenCV基础——threshold函数的使用 图像的二值化就是将图像上的像素点的灰度值设置为0或255,这样将使整个图像呈现出明显的黑白效果. 参数原型 参数说明 src:源图像,可以为8位的灰度 ...
- SQL 约束和表修改语句
1.约束作用: 约束的目的就是确保表中的数据的完整性 2.常用的约束类型如下 主键约束:(Primary Key constraint) 要求主键列唯一,并且不允许为空 唯一约束:(Unique ...
- php解决高并发(文件锁)
文件锁分为两种方式: [一].阻塞模式:(如果其他进程已经加锁文件,当前进程会一直等其他进程解锁文件后继续执行) <?php //连接数据库 $con=mysqli_connect(" ...
- neo4j批量导入neo4j-import
neo4j数据批量导入 1 neo4j基本参数 1.1 启动与关闭: 1.2 neo4j-admin的参数:控制内存 1.2.1 memrec 是查看参考内存设置 1.2.2 指定缓存–pagecac ...
- GitHub and Git
book:https://git-scm.com/book/zh/v2 Git使用简易指南:https://www.bootcss.com/p/git-guide
- 使用Workstation虚拟机部署Linux操作系统
一.安装虚拟机: 1.安装VMware Workstation; 2.选择主页.点创建新的虚拟机: 3.选择“典型”然后点下一步: 4.选择稍后安装操作系统: 5.客户机从左系统选择“Linux”版本 ...