藍橋杯-基礎練習 Huffman樹
給出一列數{pi}={p0, p1, …, pn-1},用這列數構造Huffman樹的過程如下:
1. 找到{pi}中最小的兩個數,設為pa和pb,將pa和pb從{pi}中刪除掉,然後將它們的和加入到{pi}中。這個過程的費用記為pa + pb。
2. 重複步驟1,直到{pi}中只剩下一個數。
在上面的操作過程中,把所有的費用相加,就得到了構造Huffman樹的總費用。
本題任務:對於給定的一個數列,現在請你求出用該數列構造Huffman樹的總費用。
例如,對於數列{pi}={5, 3, 8, 2, 9},Huffman樹的構造過程如下:
1. 找到{5, 3, 8, 2, 9}中最小的兩個數,分別是2和3,從{pi
2. 找到{5, 8, 9, 5}中最小的兩個數,分別是5和5,從{pi}中刪除它們並將和10加入,得到{8, 9, 10},費用為10。
3. 找到{8, 9, 10}中最小的兩個數,分別是8和9,從{pi}中刪除它們並將和17加入,得到{10, 17},費用為17。
4. 找到{10, 17}中最小的兩個數,分別是10和17,從{pi}中刪除它們並將和27加入,得到{27},費用為27。
5. 現在,數列中只剩下一個數27,構造過程結束,總費用為5+10+17+27=59。
相關推薦
藍橋杯-基礎練習 Huffman樹
Huffman樹在編碼中有著廣泛的應用。在這裡,我們只關心Huffman樹的構造過程。 給出一列數{pi}={p0, p1, …, pn-1},用這列數構造Huffman樹的過程如下: 1. 找到{pi}中最小的兩個數,設為pa和pb,將pa和pb從{pi}中刪除掉,然後將它們的和加入到{pi}中。這
貪心演算法--藍橋杯基礎練習Huffman樹
貪心演算法 所謂“貪心演算法”是指在對問題求解時,總是做出在當前看來是最好的選擇。也就是說。不從整體上加以考慮,它所做出的僅僅是在某種意義上的區域性最優解(是否是全域性最優,需要證明)。 例如 藍橋杯 基礎練習Huffman樹 問題描述 H
藍橋杯 基礎練習 Huffuman樹 (C語言)
問題描述 Huffman樹在編碼中有著廣泛的應用。在這裡,我們只關心Huffman樹的構造過程。 給出一列數{pi}={p0, p1, …, pn-1},用這列數構造Huffman樹的過程如下: 1. 找到{pi}中最小的兩個數,設為pa和pb,將pa和pb從
藍橋杯vip練習 Huffman樹
問題描述 Huffman樹在編碼中有著廣泛的應用。在這裡,我們只關心Huffman樹的構造過程。 給出一列數{pi}={p0, p1, …, pn-1},用這列數構造Huffman樹的過程如下: 1. 找到{pi}中最小的兩個數,設為pa和pb,將pa和pb從{
藍橋杯 基礎練習 Huffuman樹
問題描述 Huffman樹在編碼中有著廣泛的應用。在這裡,我們只關心Huffman樹的構造過程。 給出一列數{pi}={p0, p1, …, pn-1},用這列數構造Huffman樹的過程如下: 1. 找到{pi}中最小的兩個數,設為pa和pb,將pa和pb從
藍橋杯基礎練習---矩陣乘法
cst ans 時間限制 str 絕對值 忘記 個數 clu 表示 基礎練習 矩陣乘法 時間限制:1.0s 內存限制:512.0MB 錦囊1 錦囊2 錦囊3 問題描述 給定一個N
藍橋杯 基礎練習 BASIC-12 十六進制轉八進制
info div for 限制 class 輸入 字符 字母 res 基礎練習 十六進制轉八進制 時間限制:1.0s 內存限制:512.0MB 問題描述 給定n個十六進制正整數,輸出它們對應的八進制數。輸入格式 輸入的第一行為一個正整數n (1<=n
藍橋杯-基礎練習 :java 數列排序問題
repl 給定 can .cn turn exti color 問題 http 問題描述 給定一個長度為n的數列,將這個數列按從小到大的順序排列。1<=n<=200 輸入格式 第一行為一個整數n。 第二行包含n個整數,為待排序的數,每個整數的絕對值小
藍橋杯- 基礎練習: 字母圖形
alt gpo pan 圖片 -- ext .com color ack import java.util.Scanner; public class W { /* A B C D E F G B A B C D E F C B A B C D E D C B A
藍橋杯 基礎練習 十六進制轉八進制
spa tro rgs number 解決 ann ret else if ger import java.util.*;public class Main { public static void main(String[] args) { Scann
藍橋杯 基礎練習 十六進制轉十進制
溢出 oid import scan post 文件 ava 轉化 藍橋杯 import java.util.*;public class Main { public static void main(String[] args) { Scanner s
藍橋杯 基礎練習 十進制轉十六進制
out pos hex can ati static sca ner 十進制 import java.util.*;public class Main { public static void main(String[] args) { Scanner
藍橋杯 基礎練習 特殊回文數
pan void system ali i++ 數據 util new style /*基礎練習 特殊回文數問題描述 123321是一個非常特殊的數,它從左邊讀和從右邊讀是一樣的。 輸入一個正整數n, 編程求所有這樣的五位和六位十進制數,滿足各位數字之和等於n 。輸入格
藍橋杯 基礎練習 字母圖形
int() [] 基礎練習 tin next can abc out ann /** * 問題描述 利用字母可以組成一些美麗的圖形,下面給出了一個例子: ABCDEFG BABCDEF CBABCDE DCBABCD EDCBABC 這是一個5行7列的圖形,請找出這個圖形的
藍橋杯基礎練習 完美的代價
iostream div amp sin 移動 第一次 第一個 對稱 個數 問題描述 回文串,是一種特殊的字符串,它從左往右讀和從右往左讀是一樣的。小龍龍認為回文串才是完美的。現在給你一個串,它不一定是回文的,請你計算最少的交換次數使得該串變成一個完美的回文串。 交換
藍橋杯基礎練習 高精度加法
pre 基礎 格式 比較 計算 所有 一個數 bit i++ 問題描述 輸入兩個整數a和b,輸出這兩個整數的和。a和b都不超過100位。 算法描述 由於a和b都比較大,所以不能直接使用語言中的標準數據類型來存儲。對於這種問題,一般使用數組來處理。 定義一個數組A,
藍橋杯 基礎練習 十進位制轉十六進位制 (練習棧方法)
問題描述 十六進位制數是在程式設計時經常要使用到的一種整數的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16個符號,分別表示十進位制數的0至15。十六進位制的計數方法是滿16進1,所以十進位制數16在十六進位制中是10,而十進位制的17在十六進位制中是1
藍橋杯 基礎練習 十六進位制轉八進位制
基礎練習 十六進位制轉八進位制 時間限制:1.0s 記憶體限制:512.0MB 問題描述 給定n個十六進位制正整數,輸出它們對應的八進位制數。輸入格式
藍橋杯 基礎練習 矩陣乘法(java)
話不多說,直接上程式碼。 import java.util.Scanner; public class Main4 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n
藍橋杯基礎練習------數列排序
問題描述 給定一個長度為n的數列,將這個數列按從小到大的順序排列。1<=n<=200 輸入格式 第一行為一個整數n。 第二行包含n個整數,為待排序的數,每個整數的絕對值小於10000。 輸出格式 輸出一行,按從小到大的順序輸出排序後的數列。 樣