ZZUSOFTOJ JAM計數法(DFS全排列)

2021-09-13 21:29:43 字數 1227 閱讀 3951

時間限制: 1 sec  記憶體限制: 128 mb

提交: 19  解決: 5

[提交] [狀態] [討論版] [命題人:外部匯入]

題目描述

jam是個喜歡標新立異的科學怪人。他不使用阿拉伯數字計數,而是使用小寫英文本母計數,他覺得這樣做,會使世界更加豐富多彩。在他的計數法中,每個數字的位數都是相同的(使用相同個數的字母),英文本母按原先的順序,排在前面的字母小於排在它後面的字母。我們把這樣的「數字」稱為jam數字。在jam數字中,每個字母互不相同,而且從左到右是嚴格遞增的。每次,jam還指定使用字母的範圍,例如,從2到10,表示只能使用這些字母。如果再規定位數為5,那麼,緊接在jam數字「bdfij」之後的數字應該是「bdghi」。(如果我們用u、v依次表示jam數字「bdfij」與「bdghi」,則u < v ,且不存在jam數字p,使u < p < v )。你的任務是:對於從檔案讀入的乙個jam數字,按順序輸出緊接在後面的5個jam數字,如果後面沒有那麼多jam數字,那麼有幾個就輸出幾個。 

輸入有2行,第1行為3個正整數,用乙個空格隔開: 

s t w (其中s為所使用的最小的字母的序號,t為所使用的最大的字母的序號。w為數字的位數,這3個數滿足:1 ≤ s < t ≤ 26, 2 ≤ w ≤ t-s ) 

第2行為具有w個小寫字母的字串,為乙個符合要求的jam數字。 

所給的資料都是正確的,不必驗證。

輸出最多為5行,為緊接在輸入的jam數字後面的5個jam數字,如果後面沒有那麼多jam數字,那麼有幾個就輸出幾個。每行只輸出乙個jam數字,是由w個小寫字母組成的字串,不要有多餘的空格。

樣例輸入

2 10 5

bdfij

樣例輸出

bdghi

bdghj

bdgij

bdhij

befgh

和普通全排列的一點不同是,本題要求從固定的位置開始進行全排列,這就要求在dfs中的迴圈判斷是否是第一次迴圈,如果是就從指定位置開始,否則從零開始。

#includeusing namespace std;

bool visit[26];

char ans[26], orin[26];

int s, t, w, times;

void dfs(int depth, int i)

else

for (; i <= t; i++)

}}int main()

科學計數法

在做專案時發現乙個比較頭痛的問題,輸入法輸入金額android inputtype numberdecimal 控制項是可以輸入000.123的,為了獲取正確的輸入值可以使用下面方法,當輸入的資料很長時也不會被用科學計數法顯示 string str 000.123 bigdecimal bigdec...

Jam的計數法

題目描述 jam是個喜歡標新立異的科學怪人。他不使用阿拉伯數字計數,而是使用小寫英文本母計數,他覺得這樣做,會使世界更加豐富多彩。在他的計數法中,每個數字的位數都是相同的 使用相同個數的字母 英文本母按原先的順序,排在前面的字母小於排在它後面的字母。我們把這樣的 數字 稱為 jam數字。在 jam數...

Jam的計數法

jam是個喜歡標新立異的科學怪人。他不使用阿拉伯數字計數,而是使用小 寫英文本母計數,他覺得這樣做,會使世界更加豐富多彩。在他的計數法中,每個數字的位數都是相同的 使用相同個數的字母 英文本母按原先的順序,排在前 面的字母小於排在它後面的字母。我們把這樣的 數字 稱為jam數字。在jam數字中,每個...