代码实现:
def find_combinations(target, limit):
"""
找出所有不重复的加和等于给定数的组合。
:param target: 目标数
:param limit: 组合中元素最大值
:return: 所有不重复的加和等于目标数的组合
"""
def search(remain, path, start):
if remain == 0:
result.append(path)
return
for i in range(start, limit+1):
if remain < i:
break
search(remain-i, path+[i], i+1)
result = []
search(target, [], 1)
return result
输入:
print(find_combinations(7, 3))
输出:
[[1, 2, 4]]
此函数使用递归算法搜索目标数的组合,并将不重复的组合添加到结果列表中返回。