Problem Description

字符的编码方式有多种,除了大家熟悉的ASCII编码,哈夫曼编码(Huffman Coding)也是一种编码方式,它是可变字长编码。该方法完全依据字符出现概率来构造出平均长度最短的编码,称之为最优编码。哈夫曼编码常被用于数据文件压缩中,其压缩率通常在20%~90%之间。你的任务是对从键盘输入的一个字符串求出它的ASCII编码长度和哈夫曼编码长度的比值。

Input

输入数据有多组,每组数据一行,表示要编码的字符串。

Output

对应字符的ASCII编码长度la,huffman编码长度lh和la/lh的值(保留一位小数),数据之间以空格间隔。

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 哈夫曼编码 优先队列相关推荐

  1. 贪心算法之用优先队列(priority_queue)实现哈夫曼编码问题

    1.问题 参考我的博客:贪心算法之哈夫曼编码问题 2.优先队列知识复习 参考我的博客: C++之STL之priority_queue 3.代码实现 #include <iostream> ...

  2. sdut 数据结构实验之二叉树六:哈夫曼编码

    #include <iostream> #include <cstdio> #include <cstring> #include <queue>usi ...

  3. 数据结构实验之二叉树六:哈夫曼编码

    Description 字符的编码方式有多种,除了大家熟悉的ASCII编码,哈夫曼编码(Huffman Coding)也是一种编码方式,它是可变字长编码.该方法完全依据字符出现概率来构造出平均长度最短 ...

  4. 算法导论——贪心算法:哈夫曼编码(霍夫曼编码)

    2019独角兽企业重金招聘Python工程师标准>>> package org.loda.greedy;import org.junit.Test; import org.loda. ...

  5. labview霍夫曼编码_哈夫曼编解码压缩解压文件—C++实现

    前言 哈夫曼编码是一种贪心算法和二叉树结合的字符编码方式,具有广泛的应用背景,最直观的是文件压缩.本文主要讲述如何用哈夫曼编解码实现文件的压缩和解压,并给出代码实现. 哈夫曼编码的概念 哈夫曼树又称作 ...

  6. 哈夫曼编码压缩率计算_程序员的算法课(8)-贪心算法:理解霍夫曼编码

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/m0_37609579/article/ ...

  7. 哈夫曼编码的非树节点形式实现

    哈夫曼编码的非树节点形式实现 楔子 思考过程 于是想自己写一个headq 构建二叉树实在太久了,完全不让看文档,不敢不相信在有限的时间里可以调试成功,于是就想了使用非树的实现方式,就是把手动画的二叉树 ...

  8. 手机号段对应地区编码_漫画:“哈夫曼编码” 是什么鬼?

    在上一期,我们介绍了一种特殊的数据结构 "哈夫曼树",也被称为最优二叉树.没看过的小伙伴可以点击下方链接: 漫画:什么是 "哈夫曼树" ? 那么,这种数据结构究 ...

  9. 南邮哈夫曼编码c语言代码_漫画:“哈夫曼编码” 是什么鬼?

    ​在上一期,我们介绍了一种特殊的数据结构 "哈夫曼树",也被称为最优二叉树.没看过的小伙伴可以点击下方链接: 漫画:什么是 "哈夫曼树" ? 那么,这种数据结构 ...

最新文章

  1. ios .a和.framework
  2. mysql代码生成器_MYSQL语句生成器
  3. Learn About Bundles and the Request Lifecycle——未完待续
  4. WCF简单教程(8) 安全 - Windows认证
  5. 【2016年第2期】大数据背景下的治理现代化:何以可能与何以可为(上)
  6. Java程序员校招蚂蚁金服,大专生出身,做Java程序员真的没有春天吗
  7. 毕啸南专栏 | 对话旷视CEO印奇:AI产业2018年将迎来转折
  8. View 绘制体系知识梳理(4) 绘制过程之 Layout 详解
  9. 转:PyDev for Eclipse 简介
  10. Tortoise SVN 汉化(官网下载汉化包)
  11. POI操作WORD表格系列--复制表格,填充数据
  12. MATLAB绘制三维地图
  13. 计算机基础——4.1 数字通信入门
  14. 2020年浙江大学金融考研经验分享
  15. 网站被黑、被入侵该如何解决?
  16. Daily Reading Time-十月
  17. 记一道MISC图片题(拖延癌晚期)
  18. QT读写Sqlite数据库的三种方式
  19. (转)奴徒工匠师家圣
  20. C语言的scanf函数在visualstudio中的错误

热门文章

  1. 在Eclipse中写第一个hibernate小例子
  2. DBCC CHECKIDENT
  3. 从Internet上抓取指定URL的源码的方案
  4. Dell服务器使用集成RAID卡
  5. android+高通平台缩写汇聚
  6. 探讨如何成为技术团队管理者
  7. Android上常见度量单位【xdpi、hdpi、mdpi、ldpi】解读
  8. WINCE Launch函数分析
  9. linux 查看文件中数据类型,Linux下使用file命令确定文件中数据的类型-文件类型...
  10. python实现神经网络的正向传播(fp)函数_如何自己从零实现一个神经网络?