作者ptt0720 (湿湿)
看板Python
标题[问题] 排列组合只取一半
时间Mon Aug 21 22:09:10 2017
最近写题目写到一题
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://webptt.com/cn.aspx?n=bbs/Python/M.1503324556.A.EA0.html
1F:→ bibo9901: 他要的是 第N!/2 个排,其实是可以直接算出来的 08/21 22:14
2F:→ bibo9901: "abc"的所有排列里a开头、b开头、c开头的各有2个 08/21 22:17
3F:→ bibo9901: 所以perm("abc", 3) = "b" + perm("ac", 1) 08/21 22:18
4F:→ bibo9901: 然後递回就解了 08/21 22:18
5F:→ bibo9901: ps. perm(s, k) 代表 s的第k个排列 08/21 22:23
6F:→ ptt0720: 可以用abcd举例吗 不太懂@@ 08/21 22:58
7F:→ ptt0720: 我印list(perm(string,middle))是空的 08/21 23:02
8F:→ ptt0720: perm(m,n) n好像是取样数 不是第几种 08/21 23:24
9F:→ bibo9901: 那只是我用的记号而已 08/21 23:46
10F:→ ptt0720: 有人有不同的解释方式吗 麻烦各位了 08/22 00:02
11F:推 aegius1r: 用next+itertools.islice应该可以做? 08/22 01:06
12F:→ uranusjr: 这根本不用产生吧, 中间那个不就是从中间往左右排的结果 08/22 02:44
13F:推 k1dave6412: 题目是在哪里的啊,好奇 08/23 02:09