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

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_数据结构实验之查找三:树的种类统计的更多相关文章

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

    数据结构实验之查找三:树的种类统计 Time Limit: 400MS Memory Limit: 65536KB Submit Statistic Problem Description 随着卫星成 ...

  2. SDUT 3374 数据结构实验之查找二:平衡二叉树

    数据结构实验之查找二:平衡二叉树 Time Limit: 400MS Memory Limit: 65536KB Submit Statistic Problem Description 根据给定的输 ...

  3. SDUT 3311 数据结构实验之串三:KMP应用

    数据结构实验之串三:KMP应用 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 有n个小朋友 ...

  4. SDUT 3347 数据结构实验之数组三:快速转置

    数据结构实验之数组三:快速转置 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 转置运算是一 ...

  5. SDUT OJ 数据结构实验之二叉树三:统计叶子数

    数据结构实验之二叉树三:统计叶子数 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descr ...

  6. SDUT OJ 数据结构实验之串三:KMP应用

    数据结构实验之串三:KMP应用 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...

  7. SDUT OJ 数据结构实验之排序三:bucket sort

    数据结构实验之排序三:bucket sort Time Limit: 250 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem D ...

  8. SDUT OJ 数据结构实验之链表三:链表的逆置

    数据结构实验之链表三:链表的逆置 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descri ...

  9. SDUT 3400 数据结构实验之排序三:bucket sort

    数据结构实验之排序三:bucket sort Time Limit: 150MS Memory Limit: 65536KB Submit Statistic Problem Description ...

随机推荐

  1. 深入浅出 Java Concurrency (2): 原子操作 part 1[转]

    从相对简单的Atomic入手(java.util.concurrent是基于Queue的并发包,而Queue,很多情况下使用到了Atomic操作,因此首先从这里开始).很多情况下我们只是需要一个简单的 ...

  2. Vue 提示框组件

    OK,首先看看效果: 一.子组件(alert.vue) <template> <transition name="alert"> <div class ...

  3. IO流18 --- RandomAccessFile实现数据的读写操作 --- 技术搬运工(尚硅谷)

    RandomAccessFile实例化时,需要设置读写模式 示例:复制文件 @Test public void test16() throws IOException { RandomAccessFi ...

  4. C#——找出实现某个接口的所有类 - Hello World - CSDN博客

    原文:C#--找出实现某个接口的所有类 - Hello World - CSDN博客 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u0125260 ...

  5. Java爬虫的实现

    距离上一次写爬虫还是几年前了,那时候一直使用的是httpclient. 由于最近的项目又需要使用到爬虫,因此又重新查询了一些爬虫相关的框架,其中最合适的是WebMagic 官方文档:https://g ...

  6. Matlab 路径函数

    1 fileparts [pathstr,name,ext] = fileparts(filename) 将filename字符串分解成路径,文件名和文件后缀.文件可以不存在,ext中含有前缀dot( ...

  7. 谷歌浏览器flash被禁用解决方法

    谷歌浏览器访问设置:chrome://settings/content/flash 把要启动flash插件的网址添加进去

  8. 未加星标 Linux磁盘下查看I/O磁盘的性能

    iostat查看linux硬盘IO性能 rrqm/s:每秒进行merge的读操作数目.即delta(rmerge)/s wrqm/s:每秒进行merge的写操作数目.即delta(wmerge)/s ...

  9. Layui 获取表单提交数据

    HTML<div class="layui-card-header layuiadmin-card-header-auto"> <form class=" ...

  10. 洛谷P3298 泉

    时空限制 1000ms / 128MB 题目描述 作为光荣的济南泉历史研究小组中的一员,铭铭收集了历史上x个不同年份时不同泉区的水流指数,这个指数是一个小于. 2^30的非负整数.第i个年份时六个泉区 ...