首页 > 代码库 > Huffman编码
Huffman编码
Huffman编码用来解决最小二叉树问题...
用堆来维护,所用用优先队列(稍微修改一下放入方式)每次将两个权值最小的取出来,然后把他们的和再放进去,重复这个操作就可以解决了
1 #include<iostream> 2 #include<queue> 3 using namespace std; 4 typedef long long ll; 5 6 int main(){ 7 priority_queue<int>que; 8 int n, x; 9 cin>>n;10 for(int i=0; i<n; i++){11 cin>>x;12 que.push(-x);13 }14 ll ans=0;15 while(que.size()>1){16 int l1=-que.top();que.pop();17 int l2=-que.top();que.pop();18 ans+=(l1+l2);19 que.push(-(l1+l2));20 }21 cout<<ans<<endl;22 23 return 0;24 }
Huffman编码
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。