蓝桥杯 试题 基础练习 Huffuman树——13行代码AC
生活随笔
收集整理的這篇文章主要介紹了
蓝桥杯 试题 基础练习 Huffuman树——13行代码AC
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
儲備知識:
優先隊列→優先隊列用法函數詳解
萬能頭文件→#include<bits/stdc++.h>
思路:
最開始筆者網搜了一下哈夫曼樹,動輒上百行的代碼讓人頭大(偷懶偷懶)
于是筆者想到了一個高效的算法:優先隊列,升序排序, 每次彈出兩個最小的, 與sum累加, 將和重新壓入。直到隊列中只剩一個元素。 直接與sum相加,輸出sum
代碼:
#include<bits/stdc++.h> using namespace std; int main() {priority_queue<int,vector<int>,greater<int> > q;int n, sum = 0; cin >> n;for(int i = 0; i < n; i++) { int x; cin >> x; q.push(x); }while(q.size() != 1) {int x = q.top(); q.pop(); x+=q.top(); q.pop();sum += x; q.push(x); x = 0; }cout << sum;return 0; }總結
以上是生活随笔為你收集整理的蓝桥杯 试题 基础练习 Huffuman树——13行代码AC的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高效万进制——蓝桥杯|HDOJ 1002
- 下一篇: 回溯和递归的区别