huffman基础代码实现
#include <bits/stdc++.h>
using namespace std;
const int maxn=1e5+7;
const int INF=0x3f3f3f3f;
struct Huffman_Node{
int ans;
int father;
int left;
int right;
}H_Node[maxn];
int n;
void init()///初始化
{
for (int i=0;i<(n+n-1);++i)
{
H_Node[i].father = -1;
H_Node[i].left = -1;
H_Node[i].right = -1;
}
}
int H[maxn];
int main()
{
scanf("%d",&n);
init();
memset(H,-1,sizeof(H));
for(int i=0;i<n;++i)
{
scanf("%d",&H_Node[i].ans);
}
for (int j=1;j<n;++j)///n个叶子节点,最多合并n-1次
{
int m1 = INF;///最小的数
int m2 = INF;///第二小的数
int idx_1 = -1;
int idx_2 = -1;
for (int t=0;t<n+j-1;++t)
{
///cout<<"fa"<<' '<<H_Node[t].father<<endl;
if (H_Node[t].father==-1)
{
if (H_Node[t].ans < m1)
{
idx_2 = idx_1;
idx_1 = t;
m2 = m1;
m1 = H_Node[t].ans;
}
else if (H_Node[t].ans < m2)
{
m2 = H_Node[t].ans;
idx_2 = t;
}
}
}
/// cout<<idx_1<<' '<<idx_2<<endl;
H_Node[n+j-1].ans = H_Node[idx_1].ans + H_Node[idx_2].ans;///合并概率
///cout<<H_Node[n+j-1].ans<<endl;
H_Node[idx_2].father = n+j-1;
H_Node[idx_1].father = n+j-1;
H_Node[n+j-1].left = idx_1;
H_Node[n+j-1].right = idx_2;
}
for (int i=0;i<n;++i)
{
int F=H_Node[i].father;
///cout<<F<<endl;
int C=i;
int cnt = n;
while (F != -1)
{
if (H_Node[F].left==C)
{
H[--cnt]=0;
///cout<<0;
}
else
{
H[--cnt]=1;
///cout<<1;
}
C = F;
F = H_Node[F].father;
}
for (int j=cnt;j<n;++j)
{
printf("%d",H[j]);
}
puts("");
}
return 0;
}
huffman基础代码实现的更多相关文章
- Mysql基础代码(不断完善中)
Mysql基础代码,不断完善中~ /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限 ...
- 如何保障Go语言基础代码质量?
为什么要谈这个topic? 实践中,质量保障体系的建设,主要针对两个目标: 一是不断提高目标业务测试覆盖率,保障面向客户的产品质量:二就是尽可能的提高人效,增强迭代效率.而构建全链路质量卡点就是整个体 ...
- C++基础代码--20余种数据结构和算法的实现
C++基础代码--20余种数据结构和算法的实现 过年了,闲来无事,翻阅起以前写的代码,无意间找到了大学时写的一套C++工具集,主要是关于数据结构和算法.以及语言层面的工具类.过去好几年了,现在几乎已经 ...
- [译]Vulkan教程(04)基础代码
[译]Vulkan教程(04)基础代码 General structure 通用结构 In the previous chapter you've created a Vulkan project w ...
- 001-脚手架发展,基础代码结构+mybatis代码生成
一.概述 脚手架是为了保证各施工过程顺利进行而搭设的工作平台. 编程领域中的“脚手架(Scaffolding)”指的是能够快速搭建项目“骨架”的一类工具. java变成中,架构师搭建的代码结构你到处拷 ...
- java:Spring框架1(基本配置,简单基础代码模拟实现,spring注入(DI))
1.基本配置: 步骤一:新建项目并添加spring依赖的jar文件和commons-logging.xx.jar: 步骤二:编写实体类,DAO及其实现类,Service及其实现类; 步骤三:在src下 ...
- java:struts2.3框架1(struts2快速配置,各文件之间的关系,基础代码简化版,XML中的通配符)
1.struts2快速配置: A.到http://struts.apache.org下载struts2开发包struts-2.3.32-all.zip B.新建web项目并添加struts2依赖的ja ...
- Python基础代码1
Python基础代码 import keyword#Python中关键字 print(keyword.kwlist) ['False', 'None', 'True', 'and', 'as', 'a ...
- php 基础代码大全(不断完善中)
下面是基础的PHP的代码,不断完善中~ //语法错误(syntax error)在语法分析阶段,源代码并未被执行,故不会有任何输出. /* [命名规则] */ 常量名 类常量建议全大写,单词间用下划线 ...
- [51单片机] HC-SR04超声波测距仪 基础代码
>_<:超声波测距仪模块: >_<:51单片机,11.0592MHz晶振,将采集数据发送到串口的基础例子: >_<:代码: /******************* ...
随机推荐
- 立创杯(javabasic)
Throws关键字用于对外声明方法可能发生的异常,这样调用者在调用方法时,可以明确知道方法有异常,并进行相关处理 接口中可以包含非静态成员变量 Math.round(-1.5)//-1 round(d ...
- Redisson读写锁和分布式锁的项目实践
问题1:在修改分组时,有短链接正在访问会出现什么问题?怎么解决 假设:现有线程A正在修改短链a的分组gid1为gid2(还未修改成功) 同时有一个线程B获取了短链a分组gid1,要进行统计pv,uv, ...
- JVM垃圾回收机制常见算法
在探讨Java垃圾回收机制之前,我们首先应该记住一个单词:Stop-the-World.Stop-the-world意味着 JVM由于要执行GC而停止了应用程序的执行,并且这种情形会在任何一种G ...
- 综述论文解读:Editing Large Language Models: Problems, Methods, and Opportunities
本文为大语言模型知识编辑综述,发表于自然语言处理顶会ACL(原文链接).由于目前存在广泛的模型编辑技术,但一个统一全面的分析评估方法,所以本文: 1.对LLM的编辑方法进行了详尽.公平的实证分 ...
- python基础—初识函数(一)
1.python中函数定义 函数是逻辑结构化和过程结构化的一种编程方法. (1).python中函数定义方法: def test(x): '''The function definitions''' ...
- linux配置Maxwell
1.Maxwell-1.30.0及以上的版本不再支持JDK1.8,而JDK1.8支持的最后一个版本为1.29.2 2.下载Maxwell的压缩包,上传到服务器并解压 3.tar -xf maxwell ...
- BAPI_CUSTOMERRETURN_CREATE 创建退货订单
READ TABLE s_head INDEX 1. IF sy-subrc = 0. ls_orders_h = s_head. *** 抬头 CLEAR: ls_header,ls_headerx ...
- 指标管理+AI大模型深度融合,开启智能数据分析管理新时代
随着企业数字化转型的加速,数据管理和分析变得越来越重要.传统的指标管理平台虽然已经能够帮助企业有效地收集.计算.管理和展示关键指标,但在业务分析层面,面对日益复杂的数据环境和业务需求,单纯依靠人工分析 ...
- 谷歌浏览器 与 C# 4种嵌入浏览器 从 兼容性、性能、高级特性 方面的表现比对
CS架构 Web具有非常强大且友好的开发生态,在CS架构的窗口程序中嵌入浏览器,有哪些好处呢? 1,能够极大丰富程序的表现形式 2,能够充分地利用web的跨平台特性 3,能够使用web更现代更丰富 ...
- CentOS云服务器WordPress搭建(BT.CN)
该随笔为大学时期的建站记录,图片等等,由于域名到期,七牛云回收资源,图床失效等等,已无法考究,语雀也没法恢复文档,仅作为参考用. 此教程适用于国内的建站,英文外贸建站请移步购买位于国外的服务器[外贸建 ...