poj 1521(ENTROPY) huffman 编码
来源:互联网 发布:php cgi 启动 编辑:程序博客网 时间:2024/05/12 06:07
题目链接:poj
题目大意:赤裸裸的huffman编码,就是压缩编码,给一个串求出最短的编码
题目分析:最近学HUFFMAN编码,所以拿来用下,原理不再细讲
题目总结:1.priority_queue 对于基本类型的使用方法相对简单。他的模板声明带有三个参数:
priority_queue<Type, Container,Functional>
其中Type 为数据类型, Container 为保存数据的容器,Functional为元素比较方式。
Container 必须是用数组实现的容器,比如 vector, deque 但不能用list.
STL里面默认用的是 vector. 比较方式默认用 operator< ,所以如果你把后面俩个参数缺省的话,
优先队列就是大顶堆,队头元素最大。
e.g.-》priority_queue<int,vector<int>,greater<int>>Q;
greater<int>(最小顶堆) less<int>(最大顶堆);
详细资料:点击打开链接
2.huffman资料:点击打开链接
3.getline(cin,str)//系统默认“\n”结束,你也可以自己定义getline (cin,str,'#');
istream& getline ( istream &is , string &str , char delim );
比较函数:
#include<queue>struct node{ int x, i;}a[maxn];struct cmp{bool operator() (const node a, const node b) {if(a.x == b.x) return a.i < b.i;return a.x > b.x;}}; priority_queue<node, vector<node>, cmp> q;//自己写的比较函数
#include<iostream>#include<cstdio>#include<cstdlib>#include<string>#include<algorithm>#include<queue>priority_queue<int,vector<int>,greater<int> > que;//最小顶堆using namespace std;int main(){ string str; int level,a,b; while(1) { getline(cin,str); if(str=="END") break; sort(str.begin(),str.end()); char ch=str[0];int count=1; for(int i=1;i<str.length();i++) { if(ch==str[i]) count++; else { ch=str[i]; que.push(count);count=1; } } level=0; que.push(count); if(que.size()==1) level=que.top(); while(1) { a=que.top(); que.pop(); if(que.empty())break; b=que.top(); que.pop(); level+=a+b; que.push(a+b); } printf("%d %d %.1f\n",str.length()*8,level,(double)str.length()*8/level); } return 0;}
- poj 1521(ENTROPY) huffman 编码
- poj 1521 Entropy huffman(哈夫曼)编码
- POJ 1521 , Entropy , Huffman
- Huffman编码 POJ 1521
- HDU-1053-Entropy(Huffman编码)
- hdoj 1053 Entropy 【huffman编码】
- HDU1053 Entropy(huffman编码)
- hdu-1053-Entropy && poj-1521-Entropy (哈夫曼编码)
- HDU 1053 Entropy(huffman 编码)
- uvalive 2088 - Entropy(huffman编码)
- HDU 1053 Entropy 【优先队列+Huffman编码】
- 【POJ1521】【HDU1053】Entropy 哈夫曼(Huffman)编码
- POJ 1521 Entropy(哈夫曼编码)
- poj 1521Entropy(哈弗曼编码)
- POJ 1521 Entropy(哈夫曼编码)
- Huffman编码的不建树做法 UVALive 2088 Entropy
- POJ 1521 Entropy
- poj 1521 Entropy
- NRF24L01通道之我见及基于NRF24L01的无线组网方案的几点看法
- android:sharedUserId和LOCAL_CERTIFICATE和签名权限
- 昨天去搜狗笔试,最后一道编程题
- 如何用sqlserver导入外部数据
- 加拿大爱德华王子岛游玩记录
- poj 1521(ENTROPY) huffman 编码
- C++的安全类型转换的讨论
- MongoDB千万级数据的分析
- Clouda框架:入门全过程之安装使用
- 一直下一步安装sqlserver2008R2(只增加一个密码)后程序无法连接数据库问题
- 竞价列表问题(2)
- IBM为何选择敏捷
- POJ 1050
- OFFICE2007软件打开时出现SETUP ERROR的解决方法