hdu1053
来源:互联网 发布:php伪造来路ip 编辑:程序博客网 时间:2024/06/15 15:27
/*
解题思路用的是哈夫曼求总值+优先队列,对应的解题思路链接:http://wenku.baidu.com/link?url=O1dy_VtmtDwIFLs_p419lbxq3BDoXFal5uNKr_pBUJeeihm-6j3vbmUqga2KDY5VHG2yQN7eBR4cc1aueouWnvtTPHOldyEIMBHIBI8BNg_
网友的解题代码链接:http://blog.csdn.net/wchyumo2009/article/details/7426421
我的代码根据以上网友的代码稍微改进了一点。但是思路是一模一样的
*/
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
int num[27];
char s[1001];
int n;
int main()
{
int i;
freopen("in1.txt","r",stdin);
while(scanf("%s",s))
{
//printf("%s\m",s);
if(!strcmp(s,"END"))
{
break;
}
memset(num,0,sizeof(num));
n=0;
int len=strlen(s);
for(i=0;i<len;i++)
{
if(s[i]>='A'&&s[i]<='Z') num[s[i]-'A']++;
else num[26]++;
}
sort(num,num+27);
int temp[27];
int k=0;
for(i=0;i<=26;i++)
{
if(num[i]!=0)
{
temp[k++]=num[i];
}
}
int l=k;
if(l==1) //如果只有一个单个字符,就直接输出个数,否则就通过哈夫曼树来编写
{
n=temp[0];
}
else
{
for(i=1;i<k;i++)
{
temp[0]=temp[0]+temp[1];
n+=temp[0];
for(int j=1;j<=l-1;j++)
{
temp[j]=temp[j+1];
}
l--;
sort(temp,temp+l);
}
}
printf("%d %d %.1lf\n",len*8,n,1.0*len*8/n);
}
return 0;
}
- hdu1053
- hdu1053
- HDU1053--哈夫曼树
- HDU1053 Entropy
- HDU1053--Entropy
- HDU1053-Entropy
- Entropy hdu1053 哈夫曼树
- Hdu1053 step5.2.8(哈夫曼树)
- 【哈夫曼编码】HDU1053-Entropy
- hdu1053 Entropy(哈夫曼树应用)
- HDU1053 - Entropy (哈夫曼树)
- hdu1053 Entropy(哈夫曼树)
- HDU1053 哈夫曼编码
- hdu1053 哈弗曼编码
- ZOJ1117 POJ1521 HDU1053 Huffman编码
- hdu1053~~hafman树~第一次写
- hdu1053:Entropy 之霍夫曼编码
- HDU1053 Entropy(huffman编码)
- C# 使chart控件X轴坐标从0开始,而不是从-1开始的一种解决办法
- Quartz使用
- 高通平台android开发总结
- Linux tcpdump命令详解
- python threading多线程模块
- hdu1053
- Android开发相关的Blog推荐
- Dateutil
- C# 图片Base64 编码,图片格式转换
- 计算机视觉、机器学习相关领域论文和源代码大集合--持续更新……
- 尺度不变特征变换匹配算法详解
- 中兴412/460扩展命令(FTP、端口速率)
- URL 汉字转换编码
- 通过一个Socket例子理解Http协议(实战Java Web服务器--使用HTTP协议和JAVA类实现)