看板 Python 關於我們 聯絡資訊
最近寫題目寫到一題 http://i.imgur.com/vYeB7nL.png 要先把字串依照a b c順序排列好 之後進行排列組合 然後印出最中間的那一筆 我用的方法是itertools的module 但是在server進行運算的時候 系統說我超過時間了 限制時間是12000ms 我的code http://i.imgur.com/YvcrD7b.png 我在想應該是產生全部排列組合太沒有效率了 但是又不知道如何生成一半組合就好 -- You’ve got to find what you love - Steve Jobs -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 203.67.167.138 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1503324556.A.EA0.html
bibo9901: 他要的是 第N!/2 個排,其實是可以直接算出來的 08/21 22:14
bibo9901: "abc"的所有排列裡a開頭、b開頭、c開頭的各有2個 08/21 22:17
bibo9901: 所以perm("abc", 3) = "b" + perm("ac", 1) 08/21 22:18
bibo9901: 然後遞迴就解了 08/21 22:18
bibo9901: ps. perm(s, k) 代表 s的第k個排列 08/21 22:23
ptt0720: 可以用abcd舉例嗎 不太懂@@ 08/21 22:58
ptt0720: 我印list(perm(string,middle))是空的 08/21 23:02
ptt0720: perm(m,n) n好像是取樣數 不是第幾種 08/21 23:24
bibo9901: 那只是我用的記號而已 08/21 23:46
ptt0720: 有人有不同的解釋方式嗎 麻煩各位了 08/22 00:02
aegius1r: 用next+itertools.islice應該可以做? 08/22 01:06
uranusjr: 這根本不用產生吧, 中間那個不就是從中間往左右排的結果 08/22 02:44
k1dave6412: 題目是在哪裡的啊,好奇 08/23 02:09