Backtracking hujenga suluhisho la mgombea hatua kwa hatua na kuacha (kurudi nyuma kutoka) mgombea wa sehemu mara tu itakaposadikiwa kuwa haiwezi kusababisha suluhisho halali. Inachunguza furaha ya suluhisho kwa njia ya DFS, ikipunguza matawi ya kifo.
Wazo hilo
Chagua -> chunguza -> futa chaguo. Jaribu chaguo, kurudia; ikiwa haifanyi kazi, futa na jaribu inayofuata.
Mfano: vibali vyote
():
result = []
():
remaining:
result.append(path[:])
i ((remaining)):
path.append(remaining[i])
backtrack(path, remaining[:i] + remaining[i+:])
path.pop()
backtrack([], nums)
result
permutations([, , ])
