fano編碼的遞迴演算法

2021-07-25 02:32:53 字數 1925 閱讀 4591

資訊理論上學習了fano編碼,所以就嘗試著自己寫一遍fano編碼

#include "iostream"

#include #include "map"

#include "string"

#include "math.h"

using namespace std;

multimap> w;

void show(multimap> word);

typedef decltype(w.begin()) map_pointer;

int initial(string file_name, int max));

} if ((probability - 1) < 0.0001)else

}int make_code(map_pointer high_pointer, map_pointer low_pointer)

if (lp != low_pointer)

return 1;

}else if (high_value >= low_value)else }}

void show(multimap> word)

}int main()else

system("pause");

}

需要注意的地方是,initial函式初始化時讀取的text文字請按以下格式

最後上傳乙個68個字元概率的檔案(空格用下劃線_代替)

0.02	_

0.012 ,

0.009 .

0.0037 ?

0.0009 ;

0.0031 !

0.00029 a

0.0014 b

0.00072 c

0.0009 d

0.0006 e

0.00071 f

0.0037 g

0.00051 h

0.00032 i

0.001 j

0.00081 k

0.00022 l

0.00021 m

0.00023 n

0.00024 o

0.00002 p

0.00038 q

0.0002 r

0.0005 s

0.0007 t

0.00027 u

0.00003 v

0.0008 w

0.0017 x

0.0003 y

0.0019 z

0.064 a

0.013 b

0.0061 c

0.0246 d

0.0663 e

0.0111 f

0.0913 g

0.0555 h

0.09 i

0.02173 j

0.002 k

0.0064 l

0.0084 m

0.1254 n

0.07 o

0.0068 p

0.0059 q

0.0083 r

0.0219 s

0.0172 t

0.0936 u

0.00001 v

0.017 w

0.009 x

0.054 y

0.03 z

0.00131 0

0.00131 1

0.00131 2

0.00131 3

0.00131 4

0.00131 5

0.00131 6

0.00131 7

0.00131 8

0.00131 9

遞迴 遞迴演算法的非遞迴優化

一 遞迴 在方法內部呼叫自身方法的過程稱為遞迴,下面給出乙個遞迴方法的示例。class program 使用遞迴,實現求前n項和 public static int getsum int n int result getsum n 1 在方法體中呼叫方法本身 return result n 需要注意...

huffman編碼的MATLAB遞迴實現

huffman.m huffman編碼的遞迴實現。輸入 input 第一列為值,第二列為各個值的概率。codein,輸入即可,沒用,作遞迴時用到。輸出 output 排序後的input。code 對應p每行的huffman編碼。key 沒用,設為 即可,作遞迴時用到。參看測試 huffmantest...

演算法 遞迴演算法

遞迴演算法的概念,就是通過不斷地呼叫自身,最終達到解決問題的目的。遞迴有兩個點需要注意 1.要不斷的呼叫自身 2.這個遞迴要有出口,不能成為死迴圈 看下面的例子。很多介紹遞迴演算法的,都會用遞迴來做乙個題目 計算乙個數的階層。例如 計算5的階層,5 5 x 4 x 3 x 2 x 1 用遞迴來實現 ...