哈夫曼树简便版

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<algorithm>//算法支持头
#include<queue>
#include<functional>//greater与less

//建立一个优先级小顶堆队列
priority_queue<int,vector<int>,greater<int>> pq;//小顶堆greater  大顶堆less
//里面存储的是int类型的优先级小顶堆队列,用来提供存储数据的容器是vector,排序方式是greater

//你们对面向过程太陌生,导致你们有思想没办法一步一步实现,但是有了面向对象,
//而且官方给你提提供了一个强大的标准库STL,叫暴殄天物

int n = 0;

using namespace std;

int main()
{
	int val;
	while (!pq.empty())
		pq.pop();//清零操作

	cin >> val;
	for (int i = 0; i <n; i++)
	{
		cin >> val;
		pq.push(val);
	}

	while (pq.size() > 1)
	{
		int x1 = pq.top(); //取出第一个最小值
		pq.pop();//pop丢掉第一个最小值

		int x2 = pq.top();//取出第二个最小值
		pq.pop();//pop丢掉第二个最小值

		pq.push(x1 + x2);//更新
	}
	if (pq.size() == 1)
		cout << pq.top() << endl;

	system("pause");
}
发布了98 篇原创文章 · 获赞 1 · 访问量 4500

猜你喜欢

转载自blog.csdn.net/weixin_40823740/article/details/103114367
今日推荐