本来想着练一下哈夫曼编码那一大串代码的,然后发现,找不到题目,这个可能要等到以后涉及到大工程时才能真正实践到吧。然后找到了SDUT的两题哈夫曼题,加深了对哈夫曼树和优先队列的理解。

开始不知道这个公式(最优二叉树的权=每个叶子节点的权值之和=除根节点外的节点的权值之和=哈夫曼编码的长度),一直没想明白为什么要求除根节点外的节点的权值之和.

最后一个等于哈夫曼编码长度可以通过以下例子得出:a b c,建树:

3

2     1

1  1

易知哈夫曼编码的长度=1*2+1*2+1*1=5=最优二叉树的权

然后一个字符对应8位ascii编码。

sdut 3345

#include<cstdio>
#include<queue>
#include<cstring>
#include<string>
#include<iostream>
#include<map>
#include<set>
using namespace std;
string s;int node,wpl,n,mm,as;
int main(){while(cin>>s){node=wpl=0;map<char,int>m;priority_queue<int,vector<int>,greater<int> >q;///优先队列默认元素大的优先级高,要让数据小的优先级高这么处理。for(int i=0;i<s.length();i++){m[s[i]]++;}for(int i=0;i<s.length();i++){if(m[s[i]]){q.push(m[s[i]]);m[s[i]]=0;}}while(!q.empty()){n=q.top();q.pop();if(!q.empty()){mm=q.top();q.pop();node=n+mm;wpl+=node;q.push(node);}}as=s.length()*8;double ans=(as*1.0)/wpl;printf("%d %d %.1f\n",as,wpl,ans);}return 0;
}/***************************************************
User name: Rocky
Result: Accepted
Take time: 0ms
Take Memory: 196KB
Submit time: 2017-11-27 23:08:45
****************************************************/

sdut 2127

#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
const int maxn=1e4+5;
int n,a[maxn],nn,mm,wpl,node;
int main(){while(scanf("%d",&n)!=EOF){wpl=0;priority_queue<int,vector<int>,greater<int> >q;for(int i=0;i<n;i++){scanf("%d",&a[i]);}for(int i=0;i<n;i++){q.push(a[i]);}while(!q.empty()){nn=q.top();q.pop();if(!q.empty()){mm=q.top();q.pop();node=nn+mm;wpl+=node;q.push(node);}}printf("%d\n",wpl);}return 0;
}/***************************************************
User name: Rocky
Result: Accepted
Take time: 4ms
Take Memory: 312KB
Submit time: 2017-11-27 23:40:45
****************************************************/

sdut3345+2127 哈夫曼树相关推荐

  1. SDUT 2127 树-堆结构练习——合并果子之哈夫曼树(优先队列)

    树-堆结构练习--合并果子之哈夫曼树 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description ...

  2. Python---哈夫曼树---Huffman Tree

    今天要讲的是天才哈夫曼的哈夫曼编码,这是树形数据结构的一个典型应用. !!!敲黑板!!!哈夫曼树的构建以及编码方式将是我们的学习重点. 老方式,代码+解释,手把手教你Python完成哈夫曼编码的全过程 ...

  3. 优先级队列实现哈夫曼树的编码和译码

    //优先级队列实现的哈夫曼树的编码和译码 #include<iostream> #include<queue> #include<string> using nam ...

  4. HDU1053 Entropy 哈夫曼树

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1053 认真读题,别怕题长,此题考查的就是哈夫曼树并求出最小编码值,注意每一次要将数组清0,否则会出错! ...

  5. 数据结构与算法(6-5)二叉树的应用--哈夫曼树与哈夫曼编码

    目录 哈夫曼编码(最优二叉树) 一.优势:缩短电文长度 二.思想: 三.过程: 四.图解实现过程: 五.总代码 哈夫曼编码(最优二叉树) 一.优势:缩短电文长度 二.思想: 获取每个字符出现的频率,用 ...

  6. java振动数据压缩_【数据结构-Java】最佳实践-数据压缩(使用赫夫曼树)

    一.需求 将给出的一段文本,比如 "i like like like java do you like a java" , 根据前面的讲的赫夫曼编码原理,对其进行数据压缩处理 二. ...

  7. 哈夫曼树的java实现_java实现哈夫曼树

    哈夫曼译码,就是将输入的译码还原成对应的字符. 抽象的算法描述:将建立哈夫曼树.实现哈夫曼编码.哈夫曼译码都定义成 子函数的的形式, 然后在主函数中调用它们...... 数据结构课程设计设计题目: 哈 ...

  8. 哈夫曼树的生成及哈夫曼编码

    首先构造哈夫曼树结构体,初始化哈夫曼树的四个无符号整型域,输入文本,统计各个字符的权值,然后构建哈夫曼树,从根到叶子逆向求哈夫曼树的编码. #include"stdio.h" #i ...

  9. 赫夫曼编码(基于赫夫曼树的实现)

    上一篇文章中我们探讨了赫夫曼树的基本原理和构造方式,而赫夫曼编码可以很有效地压缩数据(通常可以节约20%-90%的空间,具体压缩率依赖于数据的特性). 名词:定长编码,边长编码,前缀码(装B用的) 定 ...

  10. 赫夫曼树(哈夫曼树)

    赫夫曼树->赫夫曼编码 在数据膨胀.信息爆炸的今天,数据压缩的意义不言而喻. 一个字节8位 赫夫曼编码压缩-无损压缩 可以看成成绩的排布.成绩是70-90之间占有70%,所以以下两个数据结构优化 ...

最新文章

  1. JPA扩展(自定义sql)
  2. jquery之empty()与remove([expr])区别
  3. unity android ndk的作用,Unity中编写Android下使用的so插件
  4. python环境变量配置_?Python项目读取配置的正确姿势
  5. 启动ubuntu无反应_推荐一款优秀的Python IDE以及在Ubuntu下的安装
  6. uri和url的区别
  7. global.php,global.php
  8. linux kvm百度云,容器与云|如何在 Ubuntu Linux 上使用 KVM 云镜像
  9. c ++查找字符串_C ++结构| 查找输出程序| 套装1
  10. HDFS常用命令(总结)
  11. oracle没有卸载,oracle卸载没有正确卸载怎么办??
  12. matlab plot 折线变曲线
  13. 使用pandas计算环比、同比
  14. 液晶屏背光LED驱动电路设计参考
  15. 大彩串口屏之LUA使用1
  16. 飞腾笔记本/银河麒麟桌面操作系统键盘无法使用
  17. 华为手机比较好用的三款推荐
  18. 智能停车场[简易版]
  19. MKR基于知识图谱的推荐算法
  20. LTE学习笔记--LTE无线连接过程--UE Attach过程和Detach过程

热门文章

  1. CVPR2023_Guided Depth Super-Resolution by Deep Anisotropic Diffusion 论文阅读记录_4
  2. 青少年爱晚睡 忧郁症易找上身
  3. 小白学 Python(20):迭代器基础
  4. 中水处理设备:MBR中水处理设备在小区水处理中应用解析
  5. mac查看linux文件,macOS/Linux 下查看二进制文件
  6. python自动化办公之爬取目录样式写入word文档实战!
  7. 创业宝典:“百万习惯”成就你创业梦想
  8. 判断是否已经安装vc2008运行时库(转载)
  9. BZOJ 1821 Group 部落划分 Group【二分+并查集】
  10. 利用Python简单实现环保212协议数据解码为字典结果【HJ212_2017协议的拆包解码】