【SOJ】Huffman编码

哈夫曼编码POJ1521优先队列 计算ASCII码和哈夫曼编码的压缩比 哈夫曼编码是非前缀(每一个编码都不是任何其他编码的前缀)不定长编码 WA的话可能是没考虑只有一个字符的情况 一开始需要把字符数组的字频统计出来,我用到了STL的map #include<cstring> #include<iostream> #include<cstdio> #include<cmath> #include<map&gt... 阅读详情

Huffman编码

描述

给你n个字符串,对于输入中的每个文本字符串,输出8位ASCII编码的位长度,哈夫曼编码的位长度,以及精确到一个小数点的压缩率。

输入

多组输入,读入以EOF结束。

每行一个 文本字符串仅包含大写字母数字字符和下划线。字符串长度不大于100

输出

对于输入中的每个文本字符串,输出8位ASCII编码的位长度,哈夫曼编码的位长度,以及精确到一个小数点的压缩率。

输入 

AAAAABCD 
THE_CAT_IN_THE_HAT

输出

64 13 4.9 
144 51 2.8

#include<iostream>
#include<algorithm>
#include<queue>
#include<cstring>
using namespace std;
int rec[28];
priority_queue<int,vector<int>,greater<int> > Q;
int huffman()
{
	int ans = 0;
	while(Q.size()>=2){
		int a = Q.top();
		Q.pop();
		int b = Q.top();
		Q.pop();
		ans = ans+a+b;
		Q.push(a+b);
	}
	return ans;
}
int main(void)
{
	char str[101];
	while(scanf("%s",&str)!=EOF){
		int len = strlen(str);
		memset(rec,0,sizeof(rec));
		for(int i=0;i<len;i++){
			if(str[i]>='A'&&str[i]<='Z') rec[str[i]-'A']++;
			if(str[i]=='_') rec[26]++;	
		}
		while(Q.size()>0) Q.pop();
		for(int i=0;i<27;i++){
			if(rec[i]>0){
				Q.push(rec[i]); 
			}
		}
		int huf = huffman();
		double ratio = double(8*len)/double(huf);
		printf("%d %d %.1f\n",8*len,huf,ratio);
	}
	return 0;
}

 

历年北京理工大学复试专业综合题 。 阅读详情

相关推荐

【计算机图形学】Pov-Ray画的垃圾小车

效果: 代码: #include "colors.inc" #include "metals.inc" #include "glass.inc" //相机 //这个位置车子刚好落在草地上了 camera { location direction z*1.5 right x*image_width/image_height look_at

lishichengyan的博客 1749

数组实现哈夫曼树以及输出哈夫曼编码

数组实现哈夫曼树以及输出哈夫曼编码

as660058的博客 2439

BOM 数据模型设计

字段名数据类型必填说明物料编码 (Part Number)字符串是唯一标识,主键。建议包含分类前缀(如STD-GEN-CUS-物料名称 (Part Name)字符串是版本 (Revision)字符串是如AB1.0,与编码组合构成唯一实例。状态 (Status)枚举是设计中(Draft)已发布(Released)已归档(Archived)已作废(Obsoleted)类型 (Type)枚举是专用件(Custom)借用件(Borrowed)通用件(Generic)标准件(Standard)

Davina_yu的博客 1756

哈夫曼编码的构建与输出

哈夫曼编码的构建与输出 halo各位看客们,最近接触到了一个很有趣且神奇的东西:哈夫曼编码!!! 那么什么是哈夫曼编码呢?我们以前看抗日神剧的时候可能经常接触到神秘电报密码这种东西,没错了,很多电报的破译就是由哈夫曼编码构成的,话不多说,让我们来见识一下这个神秘的东西。 先上我们在开头的宏定义以及头文件: #include&lt;stdio.h&gt; #include&lt;stdli...

hyc的博客 3311

12V转5V稳压电路详细分析(7805三端稳压,LM2596稳压)

7805线性三端稳压 DCDC的意思是直流变到直流(不同直流电源值的转换),只要符合这个定义都可以叫DCDC转换器,或称之为开关电源或开关调整器。 7805属于常用的线性三端稳压器,输入电压范围不大于35V,输入输出压差2V,最大输出电流1.5A,下图为原理图,其原理简单,使 用方便,深受很多用户的喜爱。但是其不足之处就是效率低,特别是压差越大时其效率越低。比如这里12V转5V的效率为 5V/12V≈41.7%。 如上电路是最经典的7805稳压5V电路,电路中有两个电容,电容的作用如下: ...

a2001444的博客 9万+

Holtek BS45F3833芯片深度剖析:如何用高集成MCU重塑超声波雾化市场格局?

本文深度剖析Holtek BS45F3833芯片如何通过高集成MCU技术重塑超声波雾化市场。该芯片集成了PWM直驱、电容检水、触摸控制等核心功能,显著提升雾化精度和效率,同时降低BOM成本和开发难度。文章通过实测数据和实战案例,展示了其在香薰机、车载设备及工业加湿器等场景的创新应用,为开发者提供了一站式解决方案。

weixin_29192211的博客 413

Huffman coding length

数据结构实验之二叉树六:哈夫曼编码 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 字符的编码方式有多种,除了大家熟悉的ASCII编码,哈夫曼编码(Huffman Coding)也是一种编码方式,它是可变字长编码。该方法完全依据字符出现概率来构造出平均长度最短的编码,称之为最优编码。哈夫曼编码常被用于数据文件压缩中,其压缩率通常在20...

power_to_go 508

Vue 实现华视身份证读卡器功能

在www.downcc.com下载“华视cvr100驱动”安装程序; 华视电子官网有相应的文档说明和程序下载 一、服务安装 选择安装目录: 启动读卡服务: 安装成功会有如图所示: 注意事项: 安装开发包必须使用管理员权限,因为windows服务和读卡器设备驱动程序均需要管理员权限,否则会安装失败。 win10需要修改组策略才有管理员权限。 二、服务的使用 打开浏览器,输入地址http://127.0.0.1:19196/mainpage,回车 点击openDevice: 点.

zyqgt960812的博客 6501

Huffman编码及实现

Huffman编码及其实现

jinking01的专栏 6543

逆强化学习:从专家示范中学习策略

逆强化学习(Inverse Reinforcement Learning,简称IRL)是强化学习(Reinforcement Learning,简称RL)的一个子领域,它的目标是从专家的行为中学习策略。在传统的强化学习中,智能体通过与环境交互,根据奖励信号来学习一个策略。而在逆强化学习中,我们没有直接的奖励信号,而是通过观察专家的行为来推断出奖励函数,从而学习到一个与专家类似的策略。逆强化学习作为强化学习的一个重要子领域,在许多实际应用场景中都取得了显著的成功。

AI天才研究院 1449

海思图像质量之HiPQTool调试

文章目录一. HiPQTool 界面二. 图像调试三. 将调试参数写入程序中 一. HiPQTool 界面 二. 图像调试 三. 将调试参数写入程序中

lzg2011的博客 2377

Huffman 编码

数据结构第五次作业——Huffman 编码 18级第五次作业(树)—Huffman编码文件压缩 【问题描述】 编写一程序采用Huffman编码对一个正文文件进行压缩。具体压缩方法如下: 对正文文件中字符(换行字符’'除外,不统计)按出现次数(即频率)进行统计 依据字符频率生成相应的Huffman树(未出现的字符不生成) 依据Huffman树生成相应字符的Huffman编码 依据字符Huff...

weixin_43784288的博客 1114

YOLOv11改进 | 注意力篇 | YOLOv11引入CA注意力机制

摘要:最近关于移动网络设计的研究已经证明了通道注意力(例如,挤压和激励注意力)对于提升模型性能的显着有效性,但它们通常忽略了位置信息,而位置信息对于生成空间选择性注意力图很重要。到此本文的正式分享内容就结束了,在这里给大家推荐我的YOLOv11改进有效涨点专栏,本专栏目前为新开的,后期我会根据各种前沿顶会进行论文复现,也会对一些老的改进机制进行补充,如果大家觉得本文帮助到你了,订阅本专栏,关注后续更多的更新~3.2 在Extramodule里创建CA。在CA.py文件里添加给出的CA代码。

tsg6698的博客 2978

sicily Huffman coding

霍夫曼编码,这个是把霍夫曼树也建好了的!必须把输入改为char才能ac,好坑...... http://soj.sysu.edu.cn/show_problem.php?pid=1002&cid=1740 1 #include <iostream> 2 #include <cstring> 3 #include <queue> 4 ...

weixin_33725126的博客 194

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

哈夫曼树的数组实现

(本篇博客是本人第一篇数据结构的博客,有什么不足还望各位看官指出!!) 题目来源:SOJ 1000. Huffman Coding V1,V3 题目描述 V3: Description 对输入的英文大写字母序列进行统计概率,然后构建Huffman树,得出每个字母的Huffman编码,输出字母序列的总编码长度。 Input 第一行是大写字母个数n(0<n<=100) 第二行为n个字...

weixin_30896763的博客 341

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

霍夫曼树

输入 一串小写字母组成的字符串(不超过1000000)。 输出 输出这个字符串通过Huffman编码后的长度。 样例 输入 abcdabcaba 输出 19 限制 1s, 1024KiB for each test case. 提示 样例中,‘a’ 出现了4次,‘b’ 出现了3次,‘c’ 出现了2次,‘d’ 出现了1次 编码为: ‘a’ : 0 ‘b’ : 10 ‘c’ : 110 ‘d’ : 1...

ニャンコちゃん的博客 1220

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

详细图解哈夫曼Huffman编码树

1 引言   霍夫曼(Huffman)编码算法是基于二叉树构建编码压缩结构的,它是数据压缩中经典的一种算法。算法根据文本字符出现的频率,重新对字符进行编码。因为为了缩短编码的长度,我们自然希望频率越高的词,编码越短,这样最终才能最大化压缩存储文本数据的空间。   假设现在我们要对下面这句歌词“we will we will r u”进行压缩。我们可以想象,如果是使用ASCII码对这句话编码结果

无鞋童鞋的博客 7万+

用java代码实现:输入一段文本,计算其中每一个字符的 huffman 编码,输出编码后文本的长度。...

可以使用 Java 的 java.util.PriorityQueue 和 java.util.Map 来实现 Huffman 编码。 下面是一个示例代码: ```java import java.util.Map; import java.util.PriorityQueue; import java.util.Scanner; public class HuffmanEncoding { pu...

weixin_42601134的博客 163

Huffman哈夫曼树编码字符,binarytree,Python

Huffman哈夫曼树(霍夫曼树,赫夫曼树)在通信领域最主要的应用是数据编码,假设现在有A、B、C、D、E五个字符,它们出现的概率或者权值不同,从A到E,权值依次降低,那么就可以用哈夫曼最优二叉树对其进行编码。 from binarytree import Node, get_parent def app(): data = [(1, 'E'), (3, 'D'), (7, 'C'), (9, 'B'), (11, 'A')] huffman_tree = build_huffman

Zhang Phil 1355

哈夫曼编码(Huffman Coding)原理详解

哈夫曼编码(Huffman Coding)原理详解

chenyfan_blog 8万+

哈夫曼编码

数据结构实验之二叉树六:哈夫曼编码 Time Limit: 1000MS Memory limit: 65536K 题目描述 字符的编码方式有多种,除了大家熟悉的ASCII编码,哈夫曼编码(Huffman Coding)也是一种编码方式,它是可变字长编码。该方法完全依据字符出现概率来构造出平均长度最短的编码,称之为最优编码。哈夫曼编码常被用于数据文件压缩中,其压缩率通常在

became_a_wolf的专栏 2658

Huffman coding —— 贪心+优先队列

优先队列重载的用法 #include &lt;iostream&gt; #include &lt;algorithm&gt; #include &lt;stdio.h&gt; #include&lt;string.h&gt; #include&lt;cmath&gt; #include&lt;stack&gt; #include&lt;queue&gt; using namespace std

兜率工的博客 271

Huffman树的创建与编码的输出

Huffman树的创建与编码的输出 Huffman树与Huffman编码 import java.util.Scanner; public class Huffman_Tree { // you know Scanner sc = new Scanner(System.in); // 栈,用于输出Huffman编码 private Stack stack = new Stack(); /* 存放二叉树结点 */ private binaryTree_N

Lagi_lanumoa的博客 441

HDOJ水题集合5:杂题

1001 拯救丁爸 BFS模板 拯救丁爸 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submission(s) : 24 Accepted Submission(s) : 9 Font: Times New Roman | Verdana | Georgia Font Size: ← → Problem Description 丁爸被火星人抓走了,关在一个N * M(N,M

小哈里的博客 2173

#POJ1521#Huffman编码

[POJ1521]Huffman编码 时间限制: 1 Sec  内存限制: 128 MB 题目描述 输入一个字符串,长度不超过100,仅由大写字母和下划线分组成。求用最好的字符编码方式,令总长度最小。 输入 多组数据,每组数据在一行上输入一个字符串,格式如前所述 当遇到END时,表示输入结束。 输出 对应每个输入,在一行上输出3个信息:首先是

ElaineZXY的博客 931

<Sicily>Huffman coding

一、题目描述 In computer science and information theory, a Huffman code is an optimal prefix code algorithm. In this exercise, please use Huffman coding to encode a given data. You should output the num...

晨曦的博客 342
上一篇: 【SOJ】换零钱(多重背包问题)
下一篇: 【LeetCode】7. Reverse Integer
coderwait
博客等级 码龄9年 20粉丝 210原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值