以下是一个可以解决不重复元素的组合问题的代码示例:
def combination(arr, k):
result = []
backtrack(arr, k, [], result, 0)
return result
def backtrack(arr, k, path, result, start):
if k == 0:
result.append(path)
return
for i in range(start, len(arr)):
backtrack(arr, k-1, path+[arr[i]], result, i+1)
# 示例用法
arr = [1, 2, 3, 4]
k = 2
result = combination(arr, k)
print(result)
这段代码使用了回溯法来生成所有不重复的组合。在combination
函数中,我们定义了一个辅助函数backtrack
来进行回溯搜索。在每一步中,我们选择一个元素加入到当前的组合中,并递归地搜索下一步。搜索完成后,我们将当前的组合加入到结果列表中。
在backtrack
函数中,我们使用了一个start
参数来避免生成重复的组合。我们只在当前位置之后的元素中进行选择,这样就保证了不会生成重复的组合。
以上代码的输出结果为[[1, 2], [1, 3], [1, 4], [2, 3], [2, 4], [3, 4]]
,它包含了给定数组[1, 2, 3, 4]
中长度为2
的所有不重复组合。