Z變換/哈夫曼編碼解決給定的二進制碼{0,10,11},能夠構成多少個長度爲j的碼序列

一道來自wh的拷問,剛看到這道題的時候,直接就想到了使用哈夫曼編碼來做這道題,這樣能夠更快地遞推出目標的規律。

最開始我進行了一個假設:

不過按照這種方法算出來的答案是不正確的,因爲對於左上角的0,它的子節點可能是1,也可能是0(自行體會)。

因爲時間問題,當時做的筆記目前找不到了,所以感興趣的同學可以按照這種方法畫一下圖,四層或者五層都行,通過圖形能夠發現對於第j層的序列,不成立的結果等於j-1層序列的結果,直接使用遞歸就能夠實現,我發現是呈線性關係,所以如果是ACM比賽可以直接使用杜教BM來計算。

接下來說一下Z變換做這道題,如果說沒有使用哈夫曼編碼進行圖形找規律,僅僅通過數據進行規律的總結的話,就會發現:

根據Z變換推導出x(n)的表達式爲:

 

當然,這道題還可以使用動態規劃來做等等。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章