A backtracking lépésekben építi fel a jelölti megoldásokat, és elhagyja (visszalép) egy részleges jelöltet, amint az nem vezethet érvényes megoldáshoz. Rendszeresen feltárja a megoldási teret DFS-en keresztül, és levágja a halott végeket.
Az ötlet
Válassz -> fedezz fel -> visszavonás. Próbálj ki egy lehetőséget, rekurziót; ha meghiúsul, vonja vissza és próbálja meg a következőt.
Példa: minden permutáció
():
result = []
():
remaining:
result.append(path[:])
i ((remaining)):
path.append(remaining[i])
backtrack(path, remaining[:i] + remaining[i+:])
path.pop()
backtrack([], nums)
result
permutations([, , ])
