看板 Python 關於我們 聯絡資訊
※ 引述《ptt0720 (濕濕)》之銘言: : 最近寫題目寫到一題 : http://i.imgur.com/vYeB7nL.png : 要先把字串依照a b c順序排列好 : 之後進行排列組合 : 然後印出最中間的那一筆 : 我用的方法是itertools的module : 但是在server進行運算的時候 系統說我超過時間了 : 限制時間是12000ms : 我的code : http://i.imgur.com/YvcrD7b.png : 我在想應該是產生全部排列組合太沒有效率了 : 但是又不知道如何生成一半組合就好 應該就只是簡單的高中數學 即 1,2,...,n 的排列, 依字典序排列, 取第 n!/2 個 (n≧2) 容易知道: (1) 當 n 為偶數時, 所求為 n/2, n, n-1,..., n/2+1, n/2-1,..., 2, 1 (第一位排 n/2, 剩下由大至小排列) (2) 當 n 為奇數時, 所求為 (n+1)/2, (n-1)/2, n, n-1,..., (n+3)/2, (n-3)/2,..., 2, 1 (第一位排 (n+1)/2, 第二位排 (n-1)/2, 剩下由大至小排列) eg. n = 10 第 10!/2 個排列為 5, 10, 9, 8, 7, 6, 4, 3, 2, 1 eg. n = 9 第 9!/2 個排列為 5, 4, 9, 8, 7, 6, 3, 2, 1 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.122.136.12 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1503397311.A.5EE.html
cutekid: 推(Y) 08/22 23:17
ptt0720: 好詳細 , 已解決~~~ 08/23 03:02