Re: [问题] 排列组合只取一半

楼主: XII (MathKid)   2017-08-22 18:21:48
※ 引述《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
作者: cutekid (可爱小孩子)   2017-08-22 23:17:00
推(Y)
作者: ptt0720 (湿湿)   2017-08-23 03:02:00
好详细 , 已解决~~~

Links booklink

Contact Us: admin [ a t ] ucptt.com