數論 編碼與解碼

2021-08-30 08:57:09 字數 734 閱讀 2662

兩個a、乙個b和乙個c組成的所有串可以按照字典序編號為:

aabc(1),aacb(2),abac(3),...,cbaa(12)

任給乙個字串,能否方便的求出它的編號呢?例如:輸入acab,則應輸出5.

下面直接求解一般情況的問題(並不限字母的種類與個數),設輸入串為s,記d(s)為s的各個排列中,字典序比s小的串的個數,則可以用遞推法求解d(s)。

其中邊上的字母表示下乙個字母,f(x)表示多重集x的全排列個數。例如:根據第乙個字母,可以把字典序小於caba的字串分3種:以a開頭的,以b開頭的,以c開頭的,分別對應d(caba)的3顆子樹。以a開頭的所有串的字典序都小於caba,所以剩下的字元可以任意排列,個數為f(cba),同理,以b開頭的所有串的字典序也都小於caba,個數為f(caa),以c開頭的串字典序不一定小於caba ,關鍵要看後3個字元,因此這部分的個數為d(aba),還需要繼續往下分。

只與f函式的求解,大部分組合數學書籍中均有介紹:設字元一共有k類,個數分別為n1,n2,....nk,則這個多重集的全排列個數為

不難算出,f(caa)=(1+2)! / 1!2! = 6/2  = 3,其他f值分別為f(cba)=6, f(b)=1, 故d(caba) = f(cba) + f(caa) + f(b) = 3 + 6 + 1 = 10

既然,比它小的個數是10,序號自然是11了。

給物體乙個編號稱為編碼,同理也有解碼,即根據序號構造出這個物體。這個過程和剛才的很接近:一次確定各個位置上的字母即可。

is 編碼與解碼

is 和 主要是數字和字串的比較 1 區別 比較的是兩邊的值 is比較的是兩邊值的id id獲取的方法 id 2 小資料池 5 256 3 字串中特殊字元有id不同 4 字串中單個字元 20以內,記憶體位址是一樣的 21以上記憶體位址不一致 編碼與解碼 1 encode a 把明文編譯成a格式 de...

Huffman編碼與解碼

近期學習資料結構碰到huffman編碼與解碼問題,自己動手寫了一些,注釋比較全,ok,下面直接貼 include include define telemtype char define wtype int define leafnumber 5 預設權重集合大小 define totalnumbe...

HTML編碼與解碼

由於html是一種由符號標記的語言,所以該語言占用了一些表示的符號。而頁面隨時需要表示這些符號,所以html將一些被占用的符號或一些特殊功能的符號使用了一些特殊的方法標記,以便展示。這些方法就是html編碼。html 中的預留字元必須被替換為字元實體。如 在 html 中不能使用小於號 和大於號 這...