POJ 1251
2016-05-24 16:41
351 查看
这道题就是对优先队列的应用。
huffman+priority_queue
huffman+priority_queue
#include <vector> #include <queue> #include <string> #include <algorithm> #include <string.h> #include <iostream> #include <cstdio> #include <cstdlib> using namespace std; int main() { string in; int count[200]; //count the character while(cin>>in&&in!="END"){ memset(count,0,sizeof(count)); for(int i=0;i<in.length();i++){ count[in[i]]++; } //the priority queue priority_queue<int,vector<int>,greater<int> >que; for(int i=0;i<200;i++){ if(count[i]!=0){ que.push(count[i]); } } int len=in.length(),sum=0; while(que.size()>1){ int a=que.top();que.pop(); int b=que.top();que.pop(); sum+=(a+b); que.push(a+b); } if(sum==0){//sum==0 means just one character sum=len; } printf("%d %d %.1f\n",8*len,sum,double(8*len)/sum); //clear the que while(!que.empty()) que.pop(); } return 0; }
相关文章推荐
- [文摘20160524]为什么你的孩子不像德国孩子那样自律?看过这个就知道怎么做了!
- iOS常识名词解释 2016/04/05
- tabBar的图标不被系统渲染
- Clang Format
- C++ 值传递、指针传递、引用传递
- mysql 修改data目录后 无法使用脚本启动 推荐
- 第13周-交通类(3)
- 模拟实现部分库函数(strcpy,strcmp,strcat,strstr,memcpy,memmove,memset)
- Picasso 图片请求库(工具类)
- Open Baidu webpage and type in Chinese characters to start searching, press “Back” button to go to B
- 3、Git基本的工作流程
- HDU 1669 Monkey and Banana
- JavaScript学习
- RRC连接重配置
- java中GC回收和内存分配
- 《统计学习方法》——概论
- Unity3D中的Update, FixedUpdate, LateUpdate的区别
- file_put_contents 错误:failed to open stream: Invalid argument 一种原因
- BBC英语-drama
- IP地址中的保留地址