poj1521

来源:互联网 发布:网络英语培训排名 编辑:程序博客网 时间:2024/06/05 03:40
#include <iostream>#include <queue>#include <string.h>#include <stdio.h>using namespace std;int main(){    string s;    int ch[300];    priority_queue<int ,vector<int>,greater<int> >q;    while(cin>>s && s!="END")    {        memset(ch,0,sizeof ch);        int len=s.length();        int len1=len*8;        int len2=0;        for(int i=0;i<len;i++)            ch[s[i]]++;        for(int i=0;i<300;i++)        {            if(ch[i]==0) continue;            q.push(ch[i]);        }        while(q.size()>1)        {            int a=q.top();q.pop();            int b=q.top();q.pop();            len2+=a+b;            q.push(a+b);        }        q.pop();        if(!len2) len2=len;        printf("%d %d %.1f\n",len1,len2,len1*1.0/len2);        //这里不要写%.1lf……这个bug找了好久……    }}

注意每两项之和就是代码长度!

原创粉丝点击