Backtracking bygger kandidatløsninger trinvist og opgiver (trækker sig tilbage fra) en delvis kandidat så snart det ikke kan føre til en gyldig løsning. Det udforsker systematisk løsningsrummet via DFS og beskærer døde ender.
Idéen
Vælg -> udforsk -> fortryd valget. Prøv en mulighed, gentag; hvis det mislykkes, fortryd og prøv den næste.
Eksempel: alle permutationer
():
result = []
():
remaining:
result.append(path[:])
i ((remaining)):
path.append(remaining[i])
backtrack(path, remaining[:i] + remaining[i+:])
path.pop()
backtrack([], nums)
result
permutations([, , ])
