poj 1521_huffmanb code
来源:互联网 发布:java通过ip获取地区 编辑:程序博客网 时间:2024/06/14 08:54
题目描述:
输入字符串,求用赫夫曼编码能得到的最好的字符编码方式,令总长度最小。求最小的长度。
解题思路:
建结构记录权重(字符出现的频率),父节点,左右子节点标识(n个叶子节点拥有不同的权重)作为赫夫曼树的叶子点结构;建立赫夫曼树(开一个2*n-1大小的数组,建立一棵有n个叶子的赫夫曼树,每次合并两个节点记录总权值)后,递归求得总权值,即为总长度。
时间复杂度为O(n2),n为不同的节点数。
代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 100000
typedef struct{
}HTNode;
HTNode ht[N];
char str[N];
int sum1,sum, n, num[27], i,j, min, tmp1,tmp2;
double sum2;
void sum_weight(HTNode hn, int i)
{
}
main()
{