Backtracking

Go to Problems

Maze Traversal Algorithm Using Backtracking

Backtracking is trying out all possibilities using recursion, exactly like bruteforce.
Suppose you have to make a series of decisions, among various choices, where :

  * You don’t have enough information to know what to choose
  * Each decision leads to a new set of choices
  * Some sequence of choices (possibly more than one) may be a solution to your problem

Backtracking is a methodical way of trying out various sequences of decisions, until you find one that “works”.

Lets look at an example to explain this further.

Given a maze, find if a path from start to finish

At each intersection, you have to decide between three or fewer choices:

    * Go straight
    * Go left
    * Go right

You don’t have enough information to choose correctly. Each choice leads to another set of choices. One or more sequences of choices may (or may not) lead to a solution.
So, you explore each option thoroughly and once you cannot find a solution using the option selected, you come back and try one of the remaining options.

Backtracking Pseudocode

A pseudocode for the above question would be :

        boolean pathFound(Position p) {
            if (p is finish) return true;
            
            foreach option O from p {
                boolean isThereAPath = pathFound(O);
                if (isThereAPath) return true; // We found a path using option O
            }
            // We have tried all options from this position and none of the options lead to finish. 
            // Hence there is no solution possible to finish
            return false;
        }

In general, the usual pseudocode for any backtracking solution is :

        boolean solve(Node n) {
            if n is a goal node, return true
            
            foreach option O possible from n {
                if solve(O) succeeds, return true
            }
            return false
        }

Now, head over to the assignments, and try out some of the problems. Most of them involve backtracking.

Serious about Learning Programming ?

Learn this and a lot more with Scaler Academy's industry vetted curriculum which covers Data Structures & Algorithms in depth.

Backtracking Problems

Subsets
Problem Score Companies Time Status
All Possible Combinations 200 37:15
Subset 250 61:56
Combination Sum 300 62:41
Combination Sum II 300 42:05
Combinations 300 46:09
Subsets II 300 41:22
Maths and backtracking
Problem Score Companies Time Status
Maximal String 200
65:32
Kth Permutation Sequence 350 79:05
Gray Code 350
58:55
Bruteforce builder
Problem Score Companies Time Status
Letter Phone 250 53:36
Palindrome Partitioning 300 68:22
Generate all Parentheses II 350
52:54
Permutations
Problem Score Companies Time Status
Permutations 350 39:38
Game solving
Problem Score Companies Time Status
NQueens 550 74:40
Sudoku 700 70:51
lock
Topic Bonus
Bonus will be unlocked after solving min. 1 problem from each bucket