哈夫曼树
使用优先队列的哈夫曼树
#include<iostream>
#include<stdio.h>
#include <vector>
#include<queue>
using namespace std;
priority_queue<long long, vector<long long>, greater<long long>>q;
//哈夫曼树
int main()
{
int n;
long long temp, x, y, ans = 0;
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%lld", &temp);
q.push(temp);
}
while (q.size() > 1)
{
x = q.top();
q.pop();
y = q.top();
q.pop();
q.push(x + y);
ans = x + y;
}
printf("%lld", ans);
return 0;
}
【推荐】AI 的力量,开发者的翅膀:欢迎使用 AI 原生开发工具 TRAE
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
· AES 加密模式演进:从 ECB、CBC 到 GCM 的 C# 深度实践
· InnoDB为什么不用跳表,Redis为什么不用B+树?
· 记一次 C# 平台调用中因非托管 union 类型导致的内存访问越界
· [EF Core]聊聊“复合”属性
· 那些被推迟的 C# 14 特性及其背后的故事
· 博客园出海记-开篇:扬帆启航
· 关于布尔类型的变量不要加 is 前缀,被网友们吐槽了,特来完善下
· 30 岁 Java 仍在 “霸榜“:开发者凭什么还在为它熬夜?
· C#中的多级缓存架构设计与实现深度解析
· GPT5写5000行代码,行不行?