《哈夫曼编码》hdu acm 5.2.8 huffman编码

原创 2015年11月18日 09:45:19
#include<cstdio>  
#include<cstring>  
#include<set>  
using namespace std;
int haffman(char *x)
{
	int len = strlen(x);
	int i, t, sum, cnt[26];
	multiset<int>m;
	memset(cnt, 0, sizeof(cnt));
	for (i = 0;i<len;i++)
	{
		t = x[i] - 'a';
		cnt[t]++;
	}
	for (i = 0;i<26;i++)
	{
		if (cnt[i])
		{
			m.insert(cnt[i]);
		}
	}
	if (m.size() == 1)
	{
		return *m.begin();
	}
	else
	{
		sum = 0;
		while (m.size()>1)
		{
			t = 0;
			for (i = 0;i<2;i++)
			{
				t += *m.begin();
				m.erase(m.begin());
			}
			m.insert(t);
			sum += t;
		}
		return sum;
	}
}
int main()
{
	int cas, n;
	scanf("%d", &cas);
	while (cas--)
	{
		char s[1000];
		scanf("%d%s", &n, s);
		if (haffman(s)>n)
			printf("no\n");
		else
			printf("yes\n");
	}
	return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

【POJ1521】【HDU1053】Entropy 哈夫曼(Huffman)编码

题意: 输出字符串的长度*8、huffman编码长度、两者比值。 题解: huffman编码: 我们发现对于一个字符串,如果我们把它变成01串,比如ABCDE 那么我们需要 A : 000 B :...

huffman(哈夫曼)编码

  • 2012-06-03 19:57
  • 793KB
  • 下载

Huffman(哈夫曼) 编码压缩算法

前两天发布那个rsync算法后,想看看数据压缩的算法,知道一个经典的压缩算法Huffman算法。相信大家应该听说过 David Huffman 和他的压缩算法—— Huffman Code,一种通...

c++实现huffman哈夫曼编码

  • 2016-10-27 19:32
  • 3.48MB
  • 下载

哈夫曼(Huffman )编码

2011-09-17 17:15 出处不详   ====================================================   前言:   ...

Huffman哈夫曼编码

  • 2012-04-11 12:57
  • 19KB
  • 下载

<OJ_Sicily>Huffman coding哈夫曼编码

实现哈夫曼编码
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)