数据结构实验之二叉树六:哈夫曼编码

来源:互联网 发布:ios的编程框架 编辑:程序博客网 时间:2024/06/10 19:21
http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Contest/contestproblem/cid/1845/pid/3345
#include <iostream>#include <cstring>#include <queue>#include <cstdio>using namespace std;int main(){    priority_queue<int, vector<int>, greater<int> >q;  //升序排列    int  n,i,num,a,b,sum;    char c[1010];    int v[1010];    while(~scanf("%s",c))    {        sum=0;        memset(v,0,sizeof(v));        int n=strlen(c);        for(i=0;i<n;i++)            v[c[i]]++;    //字符型转为int型        for(i=0;i<200;i++)        {            if(v[i])                q.push(v[i]);        }        while(!q.empty())        {            a=q.top();            q.pop();            if(!q.empty())            {                b=q.top();                q.pop();                num=a+b;                q.push(num);                sum+=num;            }        }        cout<<n*8<<" "<<sum<<" ";            printf("%.1lf\n",(n*8.0)/sum);    }    return 0;}

0 0
原创粉丝点击