a469. 10063 - Knuth's Permutation
Tags :
Accepted rate : 394人/418人 ( 94% ) [非即時]
評分方式:
Tolerant

最近更新 : 2012-05-02 15:32

Content

在Knuth的一本書"The Art of Computer Programming- Volume 1"有一些產生排列的技巧。其中有一個方法是這樣的:

對一個已經存在的排列:A1A2A3......An-1,如果要插入一個X,所有可能插入的方式為:

XA1A2A3......An-1,A1XA2A3......An-1,A1A2XA3......An-1,......,A1A2A3......XAn-1,A1A2A3,......An-1X

例如:從231這個排列要插入4在所有可能的地方,我們可以得到4231,2431,2341,2314

給你一個字元(英文字元)的集合,遵照以上的規則,你就可以產生所有的排列方式。給你的字元集合中所有的字元都不一樣,並且不會超過10個。產生的程序是遞迴的,你必須從第1個字元開始,並且按照順序的插入其他的字元。Sample Input和Sample Output會清楚的表達這一點。對Sample Input你的輸出應該完全和Sample Output一樣。

Input

每筆測試資料一列,各有一字元的集合。

Output

按照上面所提的方式,產生所有的排列方式。請注意輸入字元的順序對輸出是很重要的,也就是說 abc bca 的輸出順序是不會一樣的。

測試資料間請空一列。

Sample Input #1
abc
bca
dcba
Sample Output #1
cba
bca
bac
cab
acb
abc

acb
cab
cba
abc
bac
bca

abcd
bacd
bcad
bcda
acbd
cabd
cbad
cbda
acdb
cadb
cdab
cdba
abdc
badc
bdac
bdca
adbc
dabc
dbac
dbca
adcb
dacb
dcab
dcba

測資資訊:
記憶體限制: 512 MB
公開 測資點#0 (100%): 3.0s , <1K
Hint :
Tags:
出處:
UVa10063 [管理者: snail (蝸牛) ]

Status Forum 排行

ID User Problem Subject Hit Post Date
33850 wrr606@gmail ... (Function) a469
這題遞迴可以過
688 2023-02-08 22:22