[英]Finding all possible permutations of a fixed length of numbers to reach a given sum
[英]Calculate the possible permutations given a length and possible characters
我正在尝试计算给定一组字符(例如'a','b'
和一个长度例如2
可能排列数。
from itertools import product
mystr = 'ABC'
prodlen = 3
products = list(product(mystr,repeat=prodlen))
print(products)
但这是打印:
[('A', 'A', 'A'), ('A', 'A', 'B'), ('A', 'A', 'C'), ('A', 'B', 'A'), ('A', 'B', 'B'), ('A', 'B', 'C'), ('A', 'C', 'A'), ('A', 'C', 'B'), ('A', 'C', 'C'), ('B', 'A', 'A'), ('B', 'A', 'B'), ('B', 'A', 'C'), ('B', 'B', 'A'), ('B', 'B', 'B'), ('B', 'B', 'C'), ('B', 'C', 'A'), ('B', 'C', 'B'), ('B', 'C', 'C'), ('C', 'A', 'A'), ('C', 'A', 'B'), ('C', 'A', 'C'), ('C', 'B', 'A'), ('C', 'B', 'B'), ('C', 'B', 'C'), ('C', 'C', 'A'), ('C', 'C', 'B'), ('C', 'C', 'C')]
相反,我需要的是: A, B, AA, BB, AB, BA
而我需要这些排列的总数。 该数字应与下面的示例一样高:
17 131072
16 65536
15 32768
14 16384
13 8192
12 4096
11 2048
10 1024
9 512
8 256
7 128
6 64
5 32
4 16
3 8
2 4
1 2
Total = 262142
好像你想要的
mystr='AB'
u=len(set(mystr))
r = 17
s={}
for i in range(1,r+1):
s[i] = u**i
{1: 2,
2: 4,
3: 8,
4: 16,
5: 32,
6: 64,
7: 128,
8: 256,
9: 512,
10: 1024,
11: 2048,
12: 4096,
13: 8192,
14: 16384,
15: 32768,
16: 65536,
17: 131072}
如果要确定从替换的n个字符集中选择k个字符的方式,那么对于k个字符中的每一个,您都有n个选择。 总计为n^k
,因为n^k
个选择中的每一个都有n个选项。 如果你想用这样的组合至少为 k的字符的数量,你想是这样的:
my_string = 'ab'
n = len(set(my_string))
k = 17
p = sum([n**(i+1) for i in range(k)]) # 262143
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.