बैकट्रैकिंग संभावी समाधानों को क्रमिक रूप से बनाता है और त्याग देता है (वापस आता है) आंशिक उम्मीदवार से जैसे ही वह वैध समाधान तक नहीं पहुंच सकता। यह DFS के माध्यम से समाधान स्थान को व्यवस्थित रूप से अन्वेषण करता है, मृत सिरों को काटता है।
विचार
चुनें -> अन्वेषण करें -> अनचुनें। एक विकल्प आजमाएं, पुनरावृत्ति करें; यदि यह विफल हो जाए, तो इसे पूर्ववत करें और अगला प्रयास करें।
उदाहरण: सभी क्रमचय
():
result = []
():
remaining:
result.append(path[:])
i ((remaining)):
path.append(remaining[i])
backtrack(path, remaining[:i] + remaining[i+:])
path.pop()
backtrack([], nums)
result
permutations([, , ])
