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