描述 农夫约翰想要修篱墙,他需要N块木板,第i块板长Li。然后他买了一块很长的板子,足够他分成N块。忽略每次锯板子带来的损失。 约翰忘记买锯子了,于是像Don借。Don要收费,每次锯一下,就要收一次板子长度的钱。Don让约翰自己选择锯的方案。 求问约翰最少要花多少钱。 思路 类似Huffman编码的 ...
分类:
其他好文 时间:
2017-03-08 14:49:36
阅读次数:
171
本篇是上一篇赫夫曼树构建与编码的后续,稍微详细讲一下解码的算法。 Huffman解码算法流程: 1.定义指针p指向赫夫曼树结点,实际是记录结点数组的下标; 2.定义指针i指向编码串,定义ch逐个取编码串的字符; 3.初始化:读入编码串,设置p指向根结点,i为0; 4.执行以下循环: a)取编码串的第 ...
分类:
其他好文 时间:
2017-03-03 18:57:59
阅读次数:
150
题意:有n(n <= 5000)个数的集合S,每次可以从S中删除两个数,然后把它们的和放回集合,直到剩下一个数。每次操作的开销等于删除的两个数之和,求最小总开销。所有数均小于10^5。 分析:按此操作,最终变成1个数,需要n-1次操作,要想总开销最小,就使每次取出的两数之和最小,优先队列。 ...
分类:
其他好文 时间:
2017-02-06 19:32:49
阅读次数:
208
一款基于哈夫曼编码和最小堆的无损压缩、解压缩小程序,支持任何格式文件的压缩解压缩,代码已开源至github,具体地址请看正文前言部分 ...
分类:
其他好文 时间:
2017-01-17 23:21:58
阅读次数:
344
1、先创建一个树节点类(泛型类),为了方便使用集合的排序方法,泛型类要实现泛型接口Comparable,代码如下 package com.hjp.huffman; /** * Created by JiaPeng on 2016/12/28. */ public class Node<T> impl ...
分类:
编程语言 时间:
2016-12-28 17:38:45
阅读次数:
255
这几天在做小车的过程中,需要用到图像采集。我想现在用的摄像头是UVC免驱的。根据国嵌的教程中有一个gspca摄像头的程序。我发现把gspca的采集程序用到uvc上时,在显示图像的时候提示没有huffman表。但是在显示gspca的摄像头时却没有问题。为此特别找了以下的程序来获取uvc摄像头的数据。 ...
分类:
系统相关 时间:
2016-12-06 14:26:21
阅读次数:
545
将摄像头图像保存为jpg格式。摄像头需要是gspca免驱的。uvc若用uvc格式的需要在图像中插入Huffman表。否则无法正常显示。 程序代码: ...
分类:
系统相关 时间:
2016-12-06 13:46:03
阅读次数:
242
哈弗曼树定义:给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。 哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。 ...
分类:
其他好文 时间:
2016-11-17 00:49:32
阅读次数:
239
一.背景介绍: 给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。 二.实现步骤: 1.构造一棵哈夫曼树 2.根据创建好的哈夫曼树创建一张哈夫曼编码表 ...
分类:
编程语言 时间:
2016-11-15 07:37:37
阅读次数:
283