推 cshcsh6847: 你每個K後面寫的是那個loop的還是加總的呢? 01/13 11:53
回cshcsh6847 K後面那個是第一次進去for的i
推 yupog2003: 我認為你漏掉swap的time complexity了? 01/13 11:55
→ yupog2003: 我算了兩個版本,一個是有包含swap的,一個沒有 01/13 11:56
→ yupog2003: 我發現不包含swap的那個跟你一樣 01/13 11:57
→ yupog2003: 包含swap:T(n)=(n-1)[T(n-1)+1], T(n)=O(n*n!) 01/13 11:58
→ yupog2003: 不包含swap:T(n)=(n-1)T(n-1),T(n)=n! 01/13 11:59
→ yupog2003: 以上兩個的T(1)=n 01/13 11:59
→ yupog2003: 但我其實也沒很肯定到底要不要包含swap,不過這兩種版 01/13 12:00
→ yupog2003: 本硬要在選項選的話,似乎(E)選項都是最近的? 01/13 12:00
→ yupog2003: 我看你的推導過程感覺不出什麼問題就是了 01/13 12:04
→ yupog2003: 補充說明一下,我這邊的n其實不是題目給的n,應該是 01/13 12:05
→ yupog2003: n-k才對,就是他們兩個的差值,我重寫好了 01/13 12:06
→ yupog2003: 令x=n-k 01/13 12:06
→ yupog2003: 包含swap:T(x)=(x-1)[T(x-1)+1], T(1)=n, T(n)=n*n! 01/13 12:07
→ yupog2003: 不包含swap:T(x)=(x-1)T(x-1), T(1)=n, T(n)=n! 01/13 12:08
→ yupog2003: 阿阿上面應該都要用big-Oh包起來才對 01/13 12:08
推 krusnoopy: 印出所有的排列組合,有n!種,每一種都要印出來花n,所以O 01/13 14:21
→ krusnoopy: (n!*n) 01/13 14:21
推 krusnoopy: 我沒仔細看,可能沒考慮到印一次花O(n)吧 01/13 14:33
→ angel861047: 感謝大家回覆我先看一下@@ 01/13 15:16
※ 編輯: angel861047 (36.236.38.21), 01/13/2017 15:31:58
→ yupog2003: 我找到原因了,其實這個程式根本是錯的,他沒辦法輸出 01/13 16:23
→ yupog2003: 所有的permutation 01/13 16:24
→ yupog2003: else的那個for迴圈要用for (i=k;i<n;i++)才會正確輸出 01/13 16:25
→ yupog2003: 所有permutation,他這樣寫只會輸出(n-1)!個字串 01/13 16:25
→ yupog2003: 所以每個char算O(1)的話,的確是原po那樣導的沒錯 01/13 16:26
→ yupog2003: 但是直覺來說我覺得k大的解釋最好,因為考試根本無法 01/13 16:27
→ yupog2003: 驗證到這麼細,就是在考k大說的觀念而已 01/13 16:27
的確是直接用K大那樣解最快XD,謝謝!
※ 編輯: angel861047 (36.236.38.21), 01/13/2017 18:30:56