九度OJ——1172哈夫曼树
2017-10-10 19:58
204 查看
题目描述:
哈夫曼树,第一行输入一个数n,表示叶结点的个数。需要用这些叶结点生成哈夫曼树,根据哈夫曼树的概念,这些结点有权值,即weight,题目需要输出所有结点的值与权值的乘积之和。
输入:
输入有多组数据。
每组第一行输入一个数n,接着输入n个叶节点(叶节点权值不超过100,2<=n<=1000)。
输出:
输出权值。
样例输入:
5
1 2 2 5 9
样例输出:
37
AC代码:
哈夫曼树,第一行输入一个数n,表示叶结点的个数。需要用这些叶结点生成哈夫曼树,根据哈夫曼树的概念,这些结点有权值,即weight,题目需要输出所有结点的值与权值的乘积之和。
输入:
输入有多组数据。
每组第一行输入一个数n,接着输入n个叶节点(叶节点权值不超过100,2<=n<=1000)。
输出:
输出权值。
样例输入:
5
1 2 2 5 9
样例输出:
37
AC代码:
#include <iostream> #include <queue> #include <cstdio> using namespace std; priority_queue<int ,vector<int>,greater<int> > huffman; int N,data1,data2,weight = 0; int main() { while(~scanf("%d",&N)){ while(!huffman.empty()){ huffman.pop(); } for(int i = 0 ; i < N ; i++){ cin>>data1; huffman.push(data1); } weight = 0; while(huffman.size() > 1){ data1 = huffman.top(); huffman.pop(); data2 = huffman.top(); huffman.pop(); weight += data1+data2; huffman.push(data1+data2); } cout<<weight<<endl; } return 0; }
相关文章推荐
- 九度OJ 1172 哈夫曼树(不用建树)
- 九度OJ-1172-哈夫曼树
- 九度OJ1172:哈夫曼树
- 九度OJ-1172-哈夫曼树
- 九度OJ题目1172:哈夫曼树
- 九度OJ 1172:哈夫曼树 (贪心)
- 九度OJ-1172-哈夫曼树
- 九度OJ 1172:哈夫曼树 (贪心)
- 九度OJ题目1172:哈夫曼树
- 九度OJ - 1172 - 哈夫曼树
- 九度OJ - 1172 - 哈夫曼树
- 九度oj 题目1172:哈夫曼树(优先队列实现最小堆)
- 九度OJ 1172 哈夫曼树(不用建树)
- 题目1172:哈夫曼树
- 题目1172:哈夫曼树
- 九度题目1172:哈夫曼树
- 九度OJ-1172-哈夫曼树
- /九度OJ 教程30 优先队列解决哈夫曼树
- 题目1172:哈夫曼树
- Jobdu1172 哈夫曼树