문제 설명 :조합 문제를 해결하기 위해 역 추적 알고리즘을 사용하는 코드를 조정하는 방법
배열의 모든 조합을 반환합니다. 예를 들어 배열 [1, 2, 3]이면 결과는 다음과 같습니다.
[]
[1] [2] [3]
[1, 2] [1, 3] [2, 3]
[1, 2, 3]
예이 문제를 해결하는 방법이 많이 있습니다. 하지만 나는 그것을 backtracking 알고리즘으로 해결하려고 노력하고있다. 아래에있는 내 코드입니다 :
def p(arr):
ret = []
#using visited boolean array to avoid duplicate traverse and backtracking.
visited = [False] * len(arr)
def dfs(start_idx, temp)
ret.append(temp)
for i in range(start_idx, len(arr)):
if not visited[i]:
visited[i] = True
dfs(start_idx + 1, temp + [arr[i]])
visited[i] = False
dfs(0, [])
return ret
그것은 [[], [1], [1, 2], [1, 2, 3], [1, 3], [2], [2, 3], [3], [3, 2]]
를 반환, 내 이해에서 오답 [3, 2]
을 가지고, DFS + 되돌아은 왼쪽에서 오른쪽으로되어 한 방향으로 배열을 통과해야한다. 그러나 분명히 [3, 2]는 반대 방향이다.
어떻게 이것을 이해하고 이것을 내 코드로 해결할 수 있습니까?
'itertools.combinations'를 사용하십시오. –
하하, 물론. 그것은 종류의 방법 :) – LeoShi