这个是算法可以 求最小huffman树
#include <iostream>
#include <queue>
#include <vector>
#include <cstdio>
using namespace std;
struct Comp{
bool operator()(const int &a,const int &b)
{
return a>b;
}
};
int main()
{
int i,n,num;
while(cin>>n)
{
priority_queue<int,vector<int>,Comp>p;
for(i=0;i<n;i++)
{
scanf("%d",&num);
p.push(num);
}
if(n==1)
{ cout<<num<<endl;continue;}
int temp,sum=0;
for(i=1;i<n;i++)
{
temp=p.top(); p.pop();
temp+=p.top(); p.pop();
p.push(temp);
sum+=temp;
// cout<<temp<<" "<<"sum=="<<sum<<" ";
}
printf("%d\n",sum);
}
return 0;
}