组合
# n取k的组合数
def combination(n:int,k:int) :
res = []
def traceback(temp:list,index:int):
if len(temp) == k:
res.append(temp[:])
else:
for i in range(index,n+1):
temp.append(i)
traceback(temp,i+1)
temp.pop()
traceback([],1)
return res
r=combination(5,3)
print(r)
排列
def perm(data, begin, end):
if begin == end: # 递归结束条件,当交换到最后一个元素的时候不需要交换,1的全排列还是1。
print(data) # 打印一次排列完成后的数组。
else:
j = begin
for i in range(begin, end): # 从begin到end全排列。
data[i], data[j] = data[j], data[i]
perm(data, begin + 1, end)
data[i], data[j] = data[j], data[i] # 递归完成后,交换回原来的位置。
arr = [1, 2, 3, 4, 5]
perm(arr, 0, 4)