比如 abcd
我要生成 abcd dcab bcda adcb cdab badc dabc chad
好像没了吧
这样子用 python 有什么好的算法吗
1
westoy 2018-12-08 11:47:55 +08:00
itertools.permutations
|
2
crab 2018-12-08 11:49:04 +08:00
from itertools import permutations
|
3
iPhonePKAndroid OP |
4
mainlong 2018-12-08 14:21:02 +08:00 via Android
这应该是高中数学上排列组合。可以搜得到相关库。
如果字符串里面字符不重复,那应该是 n!的种,你这个应该是 24 种。 如果有重复的就比较麻烦了,花时间算了。 |
5
iPhonePKAndroid OP |
6
necomancer 2018-12-11 20:02:04 +08:00
@iPhonePKAndroid 全排列:
def p(n,m): |
7
necomancer 2018-12-11 20:04:47 +08:00
|
8
necomancer 2018-12-11 20:07:09 +08:00
from scipy.special import loggamma
import numpy as np def p(n, m): return np.exp(loggamma(n+1)-loggamma(m+1)) |