当前位置: 首页 > news >正文

数据压缩(哈夫曼编码)

【问题描述】在数据压缩问题中,需要将数据文件转换成由二进制字符0、1组成的二进制串,称之为编码,已知待压缩的数据中包含若干字母(A-Z),为获得更好的空间效率,请设计有效的用于数据压缩的二进制编码,使数据文件压缩后编码总长度最小,并输出这个最小长度值。

【输入形式】待压缩的数据(长度不大于100的大写字母)

【输出形式】编码的最小总长度值

【样例输入】ABACCDA

【样例输出】13

【样例说明】A编码0,B编码110,C编码10,D编码111,ABACCDA的编码为0110010101110

【评分标准】

#include<iostream>
#include<stack>
#include<algorithm>
#include<queue>
using namespace std;
int main()
{string str;cin>>str;int cnt[26]={0};int wpl=0;for(int i=0;str[i];i++){cnt[str[i]-'A']++;}priority_queue<int ,vector<int>,greater<int> >heap;for(int i=0;i<26;i++){if(cnt[i])heap.push(cnt[i]);}while(heap.size()>1){int t1=heap.top();heap.pop();int t2=heap.top();heap.pop();heap.push(t1+t2);wpl=wpl+t1+t2;}cout<<wpl<<endl;return 0;
}

http://www.lryc.cn/news/265774.html

相关文章:

  • 移动安全APP--Frida+模拟器,模拟器+burp联动
  • MATLAB遗传算法工具箱的三种使用方法
  • 复习linux——时间同步服务
  • 如何在Linux设置JumpServer实现无公网ip远程访问管理界面
  • 【Git】在 IDEA 中合并多个 commit 为一个
  • 性能实战(一) --- clock_gettime造成系统整体cpu过高定位过程
  • Ai 会替代人类工作吗?
  • 神经网络:深度学习基础
  • 如何在Windows上搭建WebDAV服务并通过内网穿透实现公网访问
  • 【Transformer框架代码实现】
  • Apache ShenYu 网关JWT认证绕过漏洞 CVE-2021-37580
  • 锐捷配置重发布RIP进OSPF中
  • Android R修改wifi热点默认为隐藏热点以及禁止自动关闭热点
  • 智能优化算法应用:基于人工大猩猩部队算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • [JS设计模式]Flyweight Pattern
  • 【.Net8教程】(一)读取配置文件全面总结
  • 亚信安慧AntDB:支撑中国广电5G业务的数据库之力
  • C++哈希表的实现
  • [Angular] 笔记 6:ngStyle
  • Linux环境下使用logrotate工具实现nginx日志切割
  • 数字信号的理解
  • 【计算机网络】TCP心跳机制、TCP粘包问题
  • 【Linux驱动】字符设备驱动程序框架 | LED驱动
  • 关于编程网站变成了地方这件事
  • stable diffusion工作原理
  • 华清远见嵌入式学习——ARM——作业2
  • R语言中使用ggplot2绘制散点图箱线图,附加显著性检验
  • 51单片机的羽毛球计分器系统【含proteus仿真+程序+报告+原理图】
  • 设计模式之-责任链模式,快速掌握责任链模式,通俗易懂的讲解责任链模式以及它的使用场景
  • Qt通用属性工具:随心定义,随时可见(一)