البحث بالعودة يبني الحلول المرشحة تدريجياً ويتخلى عن (يعود من) مرشح جزئي بمجرد عدم إمكانيته الوصول إلى حل صحيح. يستكشف بشكل منهجي فضاء الحل عبر DFS، مع قطع الفروع الميتة.
الفكرة
اختر -> استكشف -> ألغِ الاختيار. جرّب خياراً، وكرّر؛ إذا فشل، تراجع وجرّب التالي.
مثال: جميع التباديل
():
result = []
():
remaining:
result.append(path[:])
i ((remaining)):
path.append(remaining[i])
backtrack(path, remaining[:i] + remaining[i+:])
path.pop()
backtrack([], nums)
result
permutations([, , ])
