sdut 3345 哈夫曼编码 优先队列
Problem Description
字符的编码方式有多种,除了大家熟悉的ASCII编码,哈夫曼编码(Huffman Coding)也是一种编码方式,它是可变字长编码。该方法完全依据字符出现概率来构造出平均长度最短的编码,称之为最优编码。哈夫曼编码常被用于数据文件压缩中,其压缩率通常在20%~90%之间。你的任务是对从键盘输入的一个字符串求出它的ASCII编码长度和哈夫曼编码长度的比值。
Input
Output
Example Input
AAAAABCD THE_CAT_IN_THE_HAT
Example Output
64 13 4.9 144 51 2.8
Hint
#include <iostream>
#include <queue>
#include <string.h>
#include <stdio.h>
using namespace std;
int main()
{char ch[100];while(cin>>ch){int max=0,ans[260]={0};priority_queue < int,vector<int>,greater<int> > Q;//现在对这个优先队列还不是很了解for(int i=0;i<strlen(ch);++i){ans[ch[i]]++;//统计出现的次数if(ch[i]>max)//判断出现的最大值为多少,为下面的进队列做工作max=ch[i];}for(int j=0;j<=max;++j)//还有这一块,这种操作这儿有点浪费时间if(ans[j])//不为0的时候Q.push(ans[j]);int sum=0;while(!Q.empty()){int p=Q.top(),q;Q.pop();if(!Q.empty()){q=Q.top();Q.pop();sum+=p+q;Q.push(p+q);}}printf("%d %d %.1f\n",strlen(ch)*8,sum,strlen(ch)*8.0/sum);}
}
sdut 3345 哈夫曼编码 优先队列相关推荐
- 贪心算法之用优先队列(priority_queue)实现哈夫曼编码问题
1.问题 参考我的博客:贪心算法之哈夫曼编码问题 2.优先队列知识复习 参考我的博客: C++之STL之priority_queue 3.代码实现 #include <iostream> ...
- sdut 数据结构实验之二叉树六:哈夫曼编码
#include <iostream> #include <cstdio> #include <cstring> #include <queue>usi ...
- 数据结构实验之二叉树六:哈夫曼编码
Description 字符的编码方式有多种,除了大家熟悉的ASCII编码,哈夫曼编码(Huffman Coding)也是一种编码方式,它是可变字长编码.该方法完全依据字符出现概率来构造出平均长度最短 ...
- 算法导论——贪心算法:哈夫曼编码(霍夫曼编码)
2019独角兽企业重金招聘Python工程师标准>>> package org.loda.greedy;import org.junit.Test; import org.loda. ...
- labview霍夫曼编码_哈夫曼编解码压缩解压文件—C++实现
前言 哈夫曼编码是一种贪心算法和二叉树结合的字符编码方式,具有广泛的应用背景,最直观的是文件压缩.本文主要讲述如何用哈夫曼编解码实现文件的压缩和解压,并给出代码实现. 哈夫曼编码的概念 哈夫曼树又称作 ...
- 哈夫曼编码压缩率计算_程序员的算法课(8)-贪心算法:理解霍夫曼编码
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/m0_37609579/article/ ...
- 哈夫曼编码的非树节点形式实现
哈夫曼编码的非树节点形式实现 楔子 思考过程 于是想自己写一个headq 构建二叉树实在太久了,完全不让看文档,不敢不相信在有限的时间里可以调试成功,于是就想了使用非树的实现方式,就是把手动画的二叉树 ...
- 手机号段对应地区编码_漫画:“哈夫曼编码” 是什么鬼?
在上一期,我们介绍了一种特殊的数据结构 "哈夫曼树",也被称为最优二叉树.没看过的小伙伴可以点击下方链接: 漫画:什么是 "哈夫曼树" ? 那么,这种数据结构究 ...
- 南邮哈夫曼编码c语言代码_漫画:“哈夫曼编码” 是什么鬼?
在上一期,我们介绍了一种特殊的数据结构 "哈夫曼树",也被称为最优二叉树.没看过的小伙伴可以点击下方链接: 漫画:什么是 "哈夫曼树" ? 那么,这种数据结构 ...
最新文章
- ios .a和.framework
- mysql代码生成器_MYSQL语句生成器
- Learn About Bundles and the Request Lifecycle——未完待续
- WCF简单教程(8) 安全 - Windows认证
- 【2016年第2期】大数据背景下的治理现代化:何以可能与何以可为(上)
- Java程序员校招蚂蚁金服,大专生出身,做Java程序员真的没有春天吗
- 毕啸南专栏 | 对话旷视CEO印奇:AI产业2018年将迎来转折
- View 绘制体系知识梳理(4) 绘制过程之 Layout 详解
- 转:PyDev for Eclipse 简介
- Tortoise SVN 汉化(官网下载汉化包)
- POI操作WORD表格系列--复制表格,填充数据
- MATLAB绘制三维地图
- 计算机基础——4.1 数字通信入门
- 2020年浙江大学金融考研经验分享
- 网站被黑、被入侵该如何解决?
- Daily Reading Time-十月
- 记一道MISC图片题(拖延癌晚期)
- QT读写Sqlite数据库的三种方式
- (转)奴徒工匠师家圣
- C语言的scanf函数在visualstudio中的错误
热门文章
- 在Eclipse中写第一个hibernate小例子
- DBCC CHECKIDENT
- 从Internet上抓取指定URL的源码的方案
- Dell服务器使用集成RAID卡
- android+高通平台缩写汇聚
- 探讨如何成为技术团队管理者
- Android上常见度量单位【xdpi、hdpi、mdpi、ldpi】解读
- WINCE Launch函数分析
- linux 查看文件中数据类型,Linux下使用file命令确定文件中数据的类型-文件类型...
- python实现神经网络的正向传播(fp)函数_如何自己从零实现一个神经网络?