字典序問題

2021-10-03 08:06:41 字數 1341 閱讀 2214

在資料加密和資料壓縮中常需要對特殊的字串進行編碼。給定的字母表a由26個小寫字母組成。該字母表產生的公升序字串中字母從左到右出現的次序與字母在字母表**現的次序相同,且每個字元最多出現1次。例如,a,b,ab,bc,xyz等字串都是公升序字串。現在對字母表中產生的所有長度不超過6的公升序字串,計算它在字典中的編碼。12

3…2728

...... ab

c…abac

......

對於給定長度不超過6的公升序字串,迅速計算它在上述字典中的編碼

輸入資料由檔名為input.txt的文字檔案提供。檔案第一行是乙個正整數k,表示接下來的k行。在接下來的k行中,每行給出乙個字串

將計算結果輸出到檔案output.txt中。檔案中有k行,每行對應乙個字串的編碼。

這是乙個很簡單的問題,因為所有的字元都按照某個特定的順序排列,我們完全可以將所有的6位結果打表處理。問題的關鍵在於如何計算排序,可以這樣考慮,假設當前是乙個n位的字串:

#include

#include

#include

#include

using namespace std;

intcomb

(int n,

int m)

//組合數

return res;

}//combination 函式返回乙個上面為up,下面為down的乙個組合數數值。 如combination(5,8) 返回c58的值.

intcomb_continuous

(int n,

int m)

//計算一組連續的組合數之和

return sum;

}int

sums

(int len,string str)

index=str[i]

-'a'+1

;}return sum;

}int

main()

in.close()

; out.

close()

;return0;

}

測試檔案input:

5

abcabcd

dbca

facwzz

functi

輸出檔案output:

352

2952

9047

263442

275378

字典序問題

碰到過很多求關於字典序的問題,一直都是用的c 的stl庫中的函式水過的,今天終於有機會,算是對字串字典序問題的乙個總結吧。如果已知乙個字串 abc 為了更直觀,我們把建立如下對映 a 1 b 2 c 3 我們把這三個字母的所有排列都寫出來,有 序號字串 對映數字 1abc 1232 acb132 3...

字典序問題

字典序問題,給定乙個長度不超過6的小寫字母公升序字串 字串中的字元相對順序和字母表中的順序一致 迅速計算出在字典中的編碼,字典如 1 2 3 26 27 28 a b c z ab ac 總體思路為先計算出給定字串前所有的個數,然後再加一 include include 計算從i開始的長度為k的所有...

字典序問題

在資料加密和資料壓縮中需要對特殊的字串進行編碼。給定的字母表由26個小寫字母組成。該字母表產生的公升序字串是指字串中字母從左到右出現的次序與字母在字母表中出現的次序相同,且每個字元最多出現1次。例如,a,b,ab,bc,xyz等都是公升序字串。現在對字母表中產生的所有長度不超過6的公升序字串按照字典...