(最小堆)哈夫曼树 ->求结点值与权值积的和

来源:互联网 发布:周生生网络旗舰店 编辑:程序博客网 时间:2024/06/06 03:18
#include<stdio.h>#include<string.h>#include<queue>#include<algorithm>using namespace std;priority_queue< int, vector<int>, greater<int> >Q;//greater改为less即为由大到小排列 int main(){int n,x,ans;while(scanf("%d",&n)!=EOF){ans=0;while(!Q.empty()) Q.pop();for(int i=0;i<n;i++){scanf("%d",&x);Q.push(x);}while(Q.size()>1){int a=Q.top();Q.pop();int b=Q.top(); Q.pop();ans+=a+b;Q.push(a+b);}printf("%d\n",ans);}    return 0;} 

1 0
原创粉丝点击