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

来源:互联网 发布:lte中d2怎么优化 编辑:程序博客网 时间:2024/05/01 03:03
#include<bits/stdc++.h>using namespace std;int main(){    char a[50];    while(~scanf("%s",a))    {        int asc2=8*strlen(a);        priority_queue<int,vector<int>,greater<int> > q;        int cou[150],lhf=0;        memset(cou,0,sizeof(cou));        for(int i=0; i<strlen(a); i++)            cou[a[i]]++;        for(int i=0; i<150; i++)            if(cou[i])                q.push(cou[i]);        while(!q.empty())        {            int m=q.top();            q.pop();            if(!q.empty())            {                int n=q.top();                q.pop();                int p=m+n;                lhf+=p;                q.push(p);            }        }        printf("%d %d %.1lf\n",asc2,lhf,(double)asc2/(double)lhf);    }}

0 0
原创粉丝点击