´問題描述:
在資料加密和資料壓縮中常需要對特殊的字串進行編碼。給定的字母表 a 由 26 個小
寫英文本母組成 a=。該字母表產生的公升序字串是指字串中字母按照從左到
右出現的次序與字母在字母表**現的次序相同,且每個字元最多出現 1 次。例如,
a,b,ab,bc,xyz 等字串都是公升序字串。現在對字母表 a 產生的所有長度不超過 6 的公升序
字串按照字典序排列並編碼如下。
1 2 … 26 27 28 …
a b … z ab ac …
對於任意長度不超過 6 的公升序字串,迅速計算出它在上述字典中的編碼。
´程式設計任務:
對於給定的長度不超過 6 的公升序字串,程式設計計算出它在上述字典中的編碼。
´資料輸入:
輸入資料由檔名為 input.txt 的文字檔案提供。
檔案的第一行是乙個正整數 k,表示接下來共有 k 行。
接下來的 k 行中,每行給出乙個字串。
´結果輸出:
程式執行結束時,將計算結果輸出到檔案 output.txt 中。檔案共有 k 行,每行對應於一
個字串的編碼。
輸入檔案示例 輸出檔案示例
input.txt output.txt2a
b12【題解】
一開始字串為空.
然後從長度為i-1的字串裡面按照字典序的順序取出來s
然後在s後面加上乙個合適的字元生成長度為i的字串即可。
最後遍歷一遍用map給每個字串標號
【**】
#include #include #include #include #include #include using namespace std;vector v[7];
unordered_mapdic;
int main()
for (char q = key;q<='z';q++)}}
int cur = 0;
for (int i = 1;i <= 6;i++)
}int k;
cin >> k;
while (k--){
string s;
cin >> s;
cout<
演算法筆記 01 字典序問題
問題描述 在資料加密和資料壓縮中常需要對特殊的字串進行編碼。給定的字母表a由26 個小寫英文本母組成a 該字母表產生的公升序字串是指字串中字母按照從左到右出現的次序與字母在字母表中出現的次序相同,且每個字元最多出現1次。例如,a,b,ab,bc,xyz 等字串都是公升序字串。現在對字母表a 產生的所...
JZOJ 5445 字典序 題解
description 你需要構造乙個1 n的排列,使得它滿足m個條件,每個條件形如 ai,bi 表示ai必須在bi前面。在此基礎上,你需要使它的字典序最小。input 第一行兩個正整數n,m。接下來m行每行兩個數ai,bi。output 輸出一行n個整數表示答案。如果不存在這樣的排列,輸出 1。s...
UVa11520字典序迴圈
本題思路比較簡單,由於要求字典序最小,因此從第乙個位置開始,每次從a開始試錯,如果可以滿足,則進行下一位。我使用了int型別進行儲存,事實證明比標準ac麻煩了。雖然很多時候字串要轉換為int型別便於處理,但這裡不需要,直接把每行當成乙個字串就夠了。類似於ac標準答案,我們可以定義乙個template...