zoukankan      html  css  js  c++  java
  • Entropy (huffman) 优先队列)

    http://acm.hdu.edu.cn/showproblem.php?pid=1053

    Huffman问题利用STL中的priority_queue解决;

     1 #include<stdio.h>
     2 #include<iostream>
     3 #include<string>
     4 #include<algorithm>
     5 #include<map>
     6 #include<queue>
     7 using namespace std;
     8 
     9 struct cmp
    10 {
    11     bool operator()(const int a, const int b)
    12     {
    13         return a > b;
    14     }
    15 };
    16 int solve(string str)
    17 {
    18     priority_queue< int,vector<int>,cmp >que;
    19     map<char, int> mymap;
    20     int i;
    21     for(i =0; i < str.size(); i++)
    22     {
    23         mymap[str[i]]++;
    24     }
    25 
    26     map<char,int>::iterator it = mymap.begin();
    27     while(it != mymap.end())
    28     {
    29         //printf("%c %d
    ",it->first,it->second);
    30         que.push(it->second);
    31         it++;
    32     }
    33 
    34     int weight = 0;
    35     if(que.size() == 1)
    36         return que.top();
    37 
    38     while(que.size() != 1)
    39     {
    40         int a,b;
    41         a = que.top();
    42         que.pop();
    43         b = que.top();
    44         que.pop();
    45 
    46         weight += a+b;
    47         que.push(a+b);
    48     }
    49     return weight;
    50 }
    51 int main()
    52 {
    53     int weight;
    54     string str;
    55     while(cin>>str)
    56     {
    57         if(str == "END")
    58             break;
    59         weight = solve(str);
    60         printf("%d %d %.1lf
    ",8*str.size(),weight,8.0*str.size()/weight);
    61     }
    62     return 0;
    63 }
  • 相关阅读:
    vue 添加对象的新属性的方法
    vue 简单的c3属性写法
    大数据分析技术生态圈一览
    网络
    Axis2 WebService客户端Axis2调用
    前端资源
    不错的数据库
    dubbo
    大数据相关
    This is very likely to create a memory leak 异常
  • 原文地址:https://www.cnblogs.com/LK1994/p/3330644.html
Copyright © 2011-2022 走看看