稍大的串(思維 全排列)

2021-09-19 09:18:09 字數 709 閱讀 6610

串可以按照字典序進行比較。例如:

abcd 小於 abdc

如果給定乙個串,打亂組成它的字母,重新排列,可以得到許多不同的串,在這些不同的串中,有乙個串剛好給定的串稍微大一些。科學地說:它是大於已知串的所有串中最小的串。你的任務就是求出這個「稍大的串」。

例如:輸入串:

abfxy

程式應該輸出:

abfyx

再例如:

輸入串:

ayyyxxff

程式應該輸出:

fafxxyyy

資料規模約定:

輸入的串不超過1000個字元。

特例:如果已知的串已經是所有重組串中最大的,則原樣輸出讀入的那個串。

資源約定:

峰值記憶體消耗(含虛擬機器) < 256m

cpu消耗 < 1000ms

#include

#include

using namespace std;

int main()

while

(next_permutation

(s.begin()

,s.end()

));if

(s//若本來就是最大的,全排列完以後會變成最小的,所有需要特判一下

cout<

else

cout<

return0;

}

遞迴 字串全排列 全排列

在高中階段我們已經通過大量的習題了解了排列和組合。但是有時候我們研究的不是由排列和組合算出來的數字,研究的是生成排列和組合。即,把集合中元素所有的排列和組合全部列出來,然後研究這些序列的性質。今天我用兩種方法講一下如何生成排列。注意我們這裡涉及的順序都是序列的字典序。序列的字典序 設有兩個序列,第乙...

字串的排列 全排列

輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。輸入乙個字串,長度不超過9 可能有字元重複 字元只包括大小寫字母。使用itertools中的permutations,可以實現全排列 ...

M Manasa愛數學 全排列函式 思維

給你乙個整數n,是否有它的排列可以被8整除?例如,如果數字n 123,則是可能的排列。其中312可以被8整數,所以應該輸出yes。第一行輸入乙個整數t,表示有t組資料。接下來t行,每行輸入乙個整數n。1 t 45 0 n 10 110 對於每一組資料,如果其排列有一組可以被8整除,則輸出yes,否則...