就是对于给定的若干个字符,每个字符出现的频率不同,对每个字符进行编码,使得占用内存最少,
将点按照频率由小到大排序,然后贪心的选择两两合并,使得权值乘路径之和最小。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include<bits/stdc++.h> using namespace std; #define pb push_back char s[100]; int main(){ int t,m; int b[30]; while(~scanf("%d",&t)){ while(t--){ scanf("%d",&m); getchar(); scanf("%s",s); memset(b,0,sizeof b); for(int i=0;s[i]!='