[問題] 排列組合只取一半

看板Python作者 (濕濕)時間8年前 (2017/08/21 22:09), 編輯推噓2(2011)
留言13則, 5人參與, 最新討論串1/7 (看更多)
最近寫題目寫到一題 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

08/21 22:14, , 1F
他要的是 第N!/2 個排,其實是可以直接算出來的
08/21 22:14, 1F

08/21 22:17, , 2F
"abc"的所有排列裡a開頭、b開頭、c開頭的各有2個
08/21 22:17, 2F

08/21 22:18, , 3F
所以perm("abc", 3) = "b" + perm("ac", 1)
08/21 22:18, 3F

08/21 22:18, , 4F
然後遞迴就解了
08/21 22:18, 4F

08/21 22:23, , 5F
ps. perm(s, k) 代表 s的第k個排列
08/21 22:23, 5F

08/21 22:58, , 6F
可以用abcd舉例嗎 不太懂@@
08/21 22:58, 6F

08/21 23:02, , 7F
我印list(perm(string,middle))是空的
08/21 23:02, 7F

08/21 23:24, , 8F
perm(m,n) n好像是取樣數 不是第幾種
08/21 23:24, 8F

08/21 23:46, , 9F
那只是我用的記號而已
08/21 23:46, 9F

08/22 00:02, , 10F
有人有不同的解釋方式嗎 麻煩各位了
08/22 00:02, 10F

08/22 01:06, , 11F
用next+itertools.islice應該可以做?
08/22 01:06, 11F

08/22 02:44, , 12F
這根本不用產生吧, 中間那個不就是從中間往左右排的結果
08/22 02:44, 12F

08/23 02:09, , 13F
題目是在哪裡的啊,好奇
08/23 02:09, 13F
文章代碼(AID): #1PckcCwW (Python)
討論串 (同標題文章)
文章代碼(AID): #1PckcCwW (Python)