Backtracking
While solving a problem using recursion, we break the given problem into smaller ones. Let's say we have a problem AA and we divided it into three smaller problems BB, CC and DD. Now it may be the case that the solution to AA does not depend on all the three subproblems, in fact we don't even know [...]