c++输入一个字符串,分别用普通的ASCII编码(每个字符8个字节)和哈夫曼编码,输出前、后长度,以及压缩比

// 哈夫曼.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include 
#include 
#include 
#include 
#include
using namespace std;
int main()
{
	priority_queue, greater> q;
	string s;
	while (getline(cin,s)&&s!="END")
	{ 
		sort(s.begin(), s.end());           //对数组进行有序化
		int num = 1;                      //统计一种字符出现的次数
		for (int i=1; i <=s.length(); i++)
		{
			if (s[i] != s[i - 1]) { q.push(num);  cout << "num:" << num<1)
	{
		int a = q.top(); q.pop();
		int b = q.top(); q.pop();
		q.push(a + b);
		cout << b << ' ' << a << endl;
		n += a + b;
		
		

	}
	q.pop();   //弹出最后一个根节点,不用再相加了
	cout << s.length() * 8 << ' ' << n<< ' ' << (double)s.length() * 8 / (double)n << endl;
	}
	return 0;
}

你可能感兴趣的:(c++,算法,c语言)