#include<iostream>
#include<queue>
#include<string>
#include<vector>
#include<algorithm>
#include<cstdio>
#include<fstream>
using namespace std;
int main()
{
string text;
int count[128];
while (cin >> text && text != "END")
{
int i;
int n = text.size();
memset(count, 0, sizeof count);
for (i = 0; i < n; i++)
{
count[text[i]]++;
}
priority_queue<int, vector<int>, greater<int> > que;
for (i = 0; i <= 127; i++)
{
if (count[i] != 0)
{
que.push(count[i]);
}
}
int asclen, hfmlen;
asclen = n * 8;
hfmlen = 0;
if (que.size() == 1) /* only one char appear */
{
hfmlen = que.top();
que.pop();
// cout << asclen << " " << hfmlen << " " << (float)asclen / hfmlen << "\n";
printf("%d %d
POJ 1521 熵 定长编码和变长编码的比较(huffman)
最新推荐文章于 2024-08-28 20:11:02 发布
该博客探讨了如何使用C++和STL中的优先级队列来计算字符的Huffman编码长度与ASCII编码长度,并进行比较。文章指出,Huffman编码的总长度可以表示为字符频率与其编码长度乘积之和,在实现中需要注意Huffman树的构建和输出格式的控制。
摘要由CSDN通过智能技术生成