一个示例我有一组数字[1,2,3],位置4和我想不重复地生成它。
1: [1,1,1]
2: [2,1,1]
3: [1,2,1]
4: [.....]
答案 0 :(得分:1)
看看您的上一主题,我建议您要生成N^M
个N位数(长度为M)与重复的组合。请注意,每个组合都对应于0..N^M-1
范围内的整数值,因此我们可以生成此类值并将其重新呈现在N元数字系统中。 Python代码:
def GenCombs(N, M):
lst = [0]*M
for v in range(N**M):
t = v
for i in range(M):
d = t % N
lst[M - i - 1] = d + 1
t = t // N
print(lst)
要生成唯一的第K个组合(从零开始编号),请摘录:
def GenComb(N, M, K):
lst = [0]*M
for i in range(M):
d = K % N
lst[M - i - 1] = d + 1
K = K // N
return(lst)
print(GenComb(3, 3, 11))
>>> [2, 1, 3]