東華oj 挑戰題第1題 Huffuman樹

2021-10-04 01:19:05 字數 1222 閱讀 5536

1 huffuman樹

問題描述 :

huffman樹在編碼中有著廣泛的應用。在這裡,我們只關心huffman樹的構造過程。   給出一列數=,用這列數構造huffman樹的過程如下:

1. 找到中最小的兩個數,設為pa和pb,將pa和pb從中刪除掉,然後將它們的和加入到中。這個過程的費用記為pa + pb。

2. 重複步驟1,直到中只剩下乙個數。   在上面的操作過程中,把所有的費用相加,就得到了構造huffman樹的總費用。   本題任務:對於給定的乙個數列,現在請你求出用該數列構造huffman樹的總費用。

例如,對於數列=,huffman樹的構造過程如下:

1. 找到中最小的兩個數,分別是2和3,從中刪除它們並將和5加入,得到,費用為5。

2. 找到中最小的兩個數,分別是5和5,從中刪除它們並將和10加入,得到,費用為10。

3. 找到中最小的兩個數,分別是8和9,從中刪除它們並將和17加入,得到,費用為17。

4. 找到中最小的兩個數,分別是10和17,從中刪除它們並將和27加入,得到,費用為27。

5. 現在,數列中只剩下乙個數27,構造過程結束,總費用為5+10+17+27=59。 輸入說明 :

輸入的第一行包含乙個正整數n(n<=100)。 接下來是n個正整數,表示p0, p1, …, pn-1,每個數不超過1000。 輸出說明

:輸出用這些數構造huffman樹的總費用。 輸入範例 : 5 5 3 8 2 9 輸出範例 : 59

**:

/*

t1 huffuman樹

演算法概述:先排序。每次找兩個最小的數,把其中乙個置為兩數之和,並累加這個和值,

另乙個數置為-1,然後再排序,重複操作,直到只剩下乙個數。

*/#include

#define max_size 105

void

sort

(int p,

int n)

;int

main()

printf

("%d\n"

, fee)

;return0;

}void

sort

(int p,

int n)}}

}

東華oj 挑戰題第74題 地宮取寶

74 地宮取寶 問題描述 x 國王有乙個地宮寶庫。是 n x m 個格仔的矩陣。每個格仔放一件寶貝。每個寶貝貼著價值標籤。地宮的入口在左上角,出口在右下角。小明被帶到地宮的入口,國王要求他只能向右或向下行走。走過某個格仔時,如果那個格仔中的寶貝價值比小明手中任意寶貝價值都大,小明就可以拿起它 當然,...

東華oj 挑戰題第8題 矩形面積交

8 矩形面積交 問題描述 平面上有兩個矩形,它們的邊平行於直角座標系的x軸或y軸。對於每個矩形,我們給出它的一對相對頂點的座標,請你程式設計算出兩個矩形的交的面積。輸入說明 輸入僅包含兩行,每行描述乙個矩形。在每行中,給出矩形的一對相對頂點的座標,每個點的座標都用兩個絕對值不超過10 7的實數表示。...

東華oj 基礎題第32題

32 完數個數 問題描述 完數的定義 如果乙個大於1的正整數的所有真因子 不包括自己的那些因子 之和等於它的本身,則稱這個數是完數,比如6,28都是完數 6 1 2 3 28 1 2 4 7 14。本題的任務是判斷兩個正整數之間完數的個數。輸入說明 第一行是乙個正整數n,表示測試例項的個數,然後就是...