#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基础代码实现的更多相关文章

  1. Mysql基础代码(不断完善中)

    Mysql基础代码,不断完善中~ /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限 ...

  2. 如何保障Go语言基础代码质量?

    为什么要谈这个topic? 实践中,质量保障体系的建设,主要针对两个目标: 一是不断提高目标业务测试覆盖率,保障面向客户的产品质量:二就是尽可能的提高人效,增强迭代效率.而构建全链路质量卡点就是整个体 ...

  3. C++基础代码--20余种数据结构和算法的实现

    C++基础代码--20余种数据结构和算法的实现 过年了,闲来无事,翻阅起以前写的代码,无意间找到了大学时写的一套C++工具集,主要是关于数据结构和算法.以及语言层面的工具类.过去好几年了,现在几乎已经 ...

  4. [译]Vulkan教程(04)基础代码

    [译]Vulkan教程(04)基础代码 General structure 通用结构 In the previous chapter you've created a Vulkan project w ...

  5. 001-脚手架发展,基础代码结构+mybatis代码生成

    一.概述 脚手架是为了保证各施工过程顺利进行而搭设的工作平台. 编程领域中的“脚手架(Scaffolding)”指的是能够快速搭建项目“骨架”的一类工具. java变成中,架构师搭建的代码结构你到处拷 ...

  6. java:Spring框架1(基本配置,简单基础代码模拟实现,spring注入(DI))

    1.基本配置: 步骤一:新建项目并添加spring依赖的jar文件和commons-logging.xx.jar: 步骤二:编写实体类,DAO及其实现类,Service及其实现类; 步骤三:在src下 ...

  7. java:struts2.3框架1(struts2快速配置,各文件之间的关系,基础代码简化版,XML中的通配符)

    1.struts2快速配置: A.到http://struts.apache.org下载struts2开发包struts-2.3.32-all.zip B.新建web项目并添加struts2依赖的ja ...

  8. Python基础代码1

    Python基础代码 import keyword#Python中关键字 print(keyword.kwlist) ['False', 'None', 'True', 'and', 'as', 'a ...

  9. php 基础代码大全(不断完善中)

    下面是基础的PHP的代码,不断完善中~ //语法错误(syntax error)在语法分析阶段,源代码并未被执行,故不会有任何输出. /* [命名规则] */ 常量名 类常量建议全大写,单词间用下划线 ...

  10. [51单片机] HC-SR04超声波测距仪 基础代码

    >_<:超声波测距仪模块: >_<:51单片机,11.0592MHz晶振,将采集数据发送到串口的基础例子: >_<:代码: /******************* ...

随机推荐

  1. sublime仿IDEA darcula主题

    按ctrl+shif+p,输入install package,进入 搜索Darkula,出来的就是了,安装好后在配色方案里选择该主题即可. 记住,是Darkula ,不是darcula.

  2. Token:大语言模型的“语言乐高”,一切智能的基石

    1.什么是Token?--AI眼中的"文字积木块" Token 是模型用来表示自然语言文本的基本单位,也是模型的计费单元,可以直观的理解为"字"或"词 ...

  3. Go中的interface(接口)

    接口 接口(interface)定义了一个对象的行为规范,之定义规范不实现,由具体的对象来实现规范的细节. 接口类型 在Go语言中接口(interface)是一种类型,一种抽象的类型. interfa ...

  4. equals与==与hashCode的区别与联系

    equals与hashcode的区别与联系 1."=="与equals的区别与联系 (1)"=="对于基本数据类型,只要值相等,就返回true,否则返回fals ...

  5. 基于 C\# 和 .NET 的 Spread.NET 数据处理实战

    引言 在当今数字化的时代,数据处理和分析在各个领域都扮演着至关重要的角色.对于开发者而言,选择一款功能强大且易于集成的表格控件来处理数据是提高开发效率和质量的关键.Spread.NET 作为 Grap ...

  6. 利用python、scipy求解差分方程的解

    文档:https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.lfilter.html#scipy.signal.lfilt ...

  7. HarmonyOS Next快速入门:为什么学习HarmonyOS NEXT?

    鸿蒙基础知识##HarmonyOS Next快速入门## 点击跳转<HarmonyOS Next快速入门>视频教程 学习HarmonyOS NEXT的原因主要有以下几点: 一.技术前沿与创 ...

  8. CJ20N 增强客户字段 引用别人公众号文章

    引用:PS CJ20N 项目定义属性字段增强 (qq.com) 达成效果: 一.CJ20N添加字段 二.用户出口CNEX0006 CMOD分配CNEX0006 出口EXIT_SAPLCJWB_002 ...

  9. ArkUI-X跨平台技术落地-华为运动健康(一)

    现状与诉求 目前,华为运动健康App在Android 和 iOS均有独立的客户端工程,在原生页面部分,两个客户端独立开发,代码各自维护和演进,会带来各自独立的开发工作量,并且两个端之间的交互体验也无法 ...

  10. Linux安装dotnet运行时

    Centos Linux 安装 .NET 之前,请运行以下命令,将 Microsoft 包签名密钥添加到受信任密钥列表,并添加 Microsoft 包存储库. 打开终端并运行以下命令: sudo rp ...