牛客碰到的问题
- 用户可以重新定义库函数,如果定义了,此库函数失去意义。
- 宏定义是宏替换!!!!!不要忘记啦,经常要想一下!!
哈夫曼编码
就是按照二叉树构建的一个编码树。
根据权重构建最优二叉树
例 :哈弗曼编码是一种无损二进制熵编码算法,其加权路径长度最小,字符串“alibaba”的二进制哈弗曼编码有___位(bit)
哈弗曼树又叫做最优二叉树,是权值越大的点离根节点越近,导致整个树权值最小
方法:选择值最小的两个点作为左右节点,然后和作为父节点,在剩下的点以及父节点中选择最小的两个依次构造,形成哈弗曼树
左边数值是0,右边是1
哈弗曼编码是将各个点的值加起来最小
长度计算就是把各个点的值乘以路径长加起来
例a(3),b(2),l(1),i(1)
长度就是3(l+i)+2b+1a;把abli换成他们对应的3 2 1 1就是13