题意:给出字符和频率,检查学生的答案是不是最优解
输入输出:
主要思路:读入第一行数据,建立哈夫曼树,计算最优编码长度,然后读入学生数据,先计算编码长度,再检查是否符合前缀码。
但在视频中给出的建哈夫曼树的方法(如下)
使用了堆,在前面堆的章节中,元素使用数组存储,但这里函数insert和delete都返回指针,所以建立最小堆要使用结构体指针数组
堆的插入和删除如下(dt[] 是结构体指针数组,是最小堆)
然后按照视频的方法建造树
完整代码:
#include<bits/stdc++