题意:给出字符和频率,检查学生的答案是不是最优解
输入输出:

主要思路:读入第一行数据,建立哈夫曼树,计算最优编码长度,然后读入学生数据,先计算编码长度,再检查是否符合前缀码。
但在视频中给出的建哈夫曼树的方法(如下)

使用了堆,在前面堆的章节中,元素使用数组存储,但这里函数insert和delete都返回指针,所以建立最小堆要使用结构体指针数组
堆的插入和删除如下(dt[] 是结构体指针数组,是最小堆)

然后按照视频的方法建造树

完整代码:
#include<bits/stdc++.h>
using namespace std;
int n,m,heapsize;
map<char,int>mm;
bool f2;
struct data{
char a;
string b;
};
data d1[64];//d

最低0.47元/天 解锁文章
3277

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



