這道題我一開始想錯了,這麼簡單的題都wa了兩發。。。我往貪心上面想了,每次都找乙個最小的數相加,結果就是 排
序後直接往後加,還在那納悶為何出錯。。。其實這道題是哈弗曼編碼問題,簡直是模板題目,就是每次找兩個最 小的
結點求和後把他們的和放到節點中去,把這兩個點刪除。。。用的multiset,其實和set容器差不多,就是可
以存放重複的元素。。。
**:
#include#include#include#include#includeusing namespace std;
int main()
set::iterator it;
// for(it=ms.begin(); it!=ms.end(); it++)
// cout << *it << " ";
// cout << endl;
int ans = 0;
int sum;
while(ms.size()!=1)
ms.clear();
cout << ans << endl;
} return 0;
}
UVA 10954 貪心 優先佇列
貪心策略 每次選取最小的兩個數相加,將和作為新的數加入序列,再從裡面取兩個最小的數.直到只剩下乙個數。優先佇列正好對付這題。ps 以前在學校oj做過幾乎一毛一樣的這題 ac include includeusing namespace std priority queue,greater q the...
UVA10954哈夫曼樹與優先佇列
這個題就是乙個最小堆,也就是常說的哈夫曼樹,可以直接使用stl優先佇列,先給乙個哈夫曼樹的 建樹,取堆值,插入值。哈夫曼樹 include include include include include include include include include include include ...
UVA 木塊問題 101
uva 木塊問題 101,好開森好開森。雖然花了很長時間,不過能一次就ac也是蠻開心的,用c 寫效率就是不錯 疊木塊其實是乙個二維空間,每個木塊都有縱橫座標 include include includeusing namespace std block用於記錄木塊所在位置,x是位於哪一疊木塊,y是...