#18880: 無法理解題目


k487237 (chenchen)

學校 : 國立臺中第一高級中學
編號 : 75487
來源 : [140.113.90.32]
最後登入時間 :
2020-04-15 01:15:32
a469. 10063 - Knuth's Permutation -- UVa10063 | From: [61.223.26.186] | 發表日期 : 2019-08-11 16:21

看了好久還是不懂 為啥 abc 的結果會是 

cba
bca
bac
cab
acb
abc

而不是
abc
bac
bca
acb
cab
acb
這樣從a開始插入進去
 
#18882: Re:無法理解題目


easylin0126@gmail.com (林榮翼)

學校 : 臺北市立成功高級中學
編號 : 89424
來源 : [140.114.207.162]
最後登入時間 :
2023-09-27 16:33:24
a469. 10063 - Knuth's Permutation -- UVa10063 | From: [27.242.190.3] | 發表日期 : 2019-08-11 17:01

看了好久還是不懂 為啥 abc 的結果會是 

cba
bca
bac
cab
acb
abc

而不是
abc
bac
bca
acb
cab
acb
這樣從a開始插入進去


1.插入a

結果: a

2.插入b

結果: ba ab

3.插入c

結果: cba bca bac cab acb abc

 
#18884: Re:無法理解題目


inversion (「我們所認識的可符香是個像天使的好女孩」之葉林 *Cries...)

學校 : 國立清華大學
編號 : 43537
來源 : [49.159.6.107]
最後登入時間 :
2022-05-28 19:29:12
a469. 10063 - Knuth's Permutation -- UVa10063 | From: [49.158.83.43] | 發表日期 : 2019-08-11 17:09

如題目所述:

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

 

因此不是從 a 插入進其他字元(主動),是從 a 開始插入其他字元(被動)。

 

以 abc 為例,藍色字為一排列:

一開始是 a

接著插入 b 在左邊,變 ba 

再插入 c 在左邊,變 cba 

退回到 ba

插入 c 於 b 、 a 之間,變 bca 

回到 ba

插入 c 於尾端,變 bac 

回到 ba

回到 a

插入 b 至 a 的左側,變 ab 

再插入 c 在左邊,變 cab 

退回到 ab

插入 c 於 b 、 a 之間,變 acb 

回到 ab

插入 c 於尾端,變 abc 

回到 ab

回到 a

遞迴結束。

 

因此輸出順序確實是

cba 

bca 

bac 

cab 

acb 

abc 

這樣子沒錯。

 
#18886: Re:無法理解題目


k487237 (chenchen)

學校 : 國立臺中第一高級中學
編號 : 75487
來源 : [140.113.90.32]
最後登入時間 :
2020-04-15 01:15:32
a469. 10063 - Knuth's Permutation -- UVa10063 | From: [61.223.26.186] | 發表日期 : 2019-08-11 17:36

如題目所述:

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

 

因此不是從 a 插入進其他字元(主動),是從 a 開始插入其他字元(被動)。

 

以 abc 為例,藍色字為一排列:

一開始是 a

接著插入 b 在左邊,變 ba 

再插入 c 在左邊,變 cba 

退回到 ba

插入 c 於 b 、 a 之間,變 bca 

回到 ba

插入 c 於尾端,變 bac 

回到 ba

回到 a

插入 b 至 a 的左側,變 ab 

再插入 c 在左邊,變 cab 

退回到 ab

插入 c 於 b 、 a 之間,變 acb 

回到 ab

插入 c 於尾端,變 abc 

回到 ab

回到 a

遞迴結束。

 

因此輸出順序確實是

cba 

bca 

bac 

cab 

acb 

abc 

這樣子沒錯。

哦哦,瞭解。

想成要從第一個字元開始 插入其他的字元,感謝樓主的說明。

中文真的是有點奧妙,同樣一句話,有多種解讀的方式。

 
ZeroJudge Forum