字典序問題,給定乙個長度不超過6的小寫字母公升序字串(字串中的字元相對順序和字母表中的順序一致),迅速計算出在字典中的編碼,字典如:
1 2 3 ... 26 27 28 ...
a b c ... z ab ac ...
總體思路為先計算出給定字串前所有的個數,然後再加一
#include #include //計算從i開始的長度為k的所有數的個數
//例如以a開頭長度為2的所有組合個數
int charactercount(int i, int k)
else
}return sum;
}//計算長度為k的字串的所有組合的總和個數
//例如以a開頭,長度為2的所有組合的總和個數等於長度為2的加上長度為1的
int charactersumcount(int k)
return sum;
}//總體思路為先計算出給定字串前所有的個數再加一
int findcode(std::string &str)
//小於第乙個字母的長度為k的所有組合
for (int i = 1; i < str[0] - 96; ++i)
//以第乙個字母作為開始字元的字串組合總個數
for (int i = 1; i < str.size(); ++i)
}return code + 1; //前面**求出了給定字串前所有的個數,加1就是給定字串的編碼
}int main(int argc, char *argv)
std::cout << findcode(str) << std::endl;
return exit_success;
}
字典序問題
碰到過很多求關於字典序的問題,一直都是用的c 的stl庫中的函式水過的,今天終於有機會,算是對字串字典序問題的乙個總結吧。如果已知乙個字串 abc 為了更直觀,我們把建立如下對映 a 1 b 2 c 3 我們把這三個字母的所有排列都寫出來,有 序號字串 對映數字 1abc 1232 acb132 3...
字典序問題
在資料加密和資料壓縮中需要對特殊的字串進行編碼。給定的字母表由26個小寫字母組成。該字母表產生的公升序字串是指字串中字母從左到右出現的次序與字母在字母表中出現的次序相同,且每個字元最多出現1次。例如,a,b,ab,bc,xyz等都是公升序字串。現在對字母表中產生的所有長度不超過6的公升序字串按照字典...
字典序問題
字典序問題。在資料加密和資料壓縮中常需要對特殊的字串進行編碼。給定的字母表a由26個小寫字母組成。該字母表產生的公升序字串中字母 從左到右出現的次序與字母在字母表中出現的次序相同,且每個字元最多出現1次。例如,a,b,ab,bc,xyz等字串都是公升序字串。現在對字母表中產生的所有長度不超過6的公升...