思路:
1.记录频率
①用数组记录要编码的字符(char ch[N];)
②建立map容器Time,用Time[字符]记录字符的使用次数
2.建立Huffman树,计算出最少花费
①用优先队列建Huffman树
②计算最少花费(用队列层序遍历Huffman树)
3.比较测试数据
①花费是否最少 ----如果不是---->输出no (编码长度*字符使用次数)
②是否没有歧义 (比较前缀,用map容器,从小到大标记,每次标记前判断子段是否已经被标记)
#include <bits/stdc++.h>
using namespace std;
const int N = 100;
int n;
char ch[N];
map<char,int> Time;
struct node
{

该博客介绍了如何利用优先队列来构建Huffman树,并通过层序遍历来计算最小花费。内容包括记录字符频率、建立Huffman树以及比较测试数据的过程,确保编码的最优化和无歧义。
最低0.47元/天 解锁文章
696

被折叠的 条评论
为什么被折叠?



