Backtracking is an optimization of Brute-force (Exhaustive). Backtracking attempts to find a solution, but discards searching it if there is no way it can achieve the solution requirements.

Pseudocode

Algorithm BackTrack(attempt = [],possible_options = []):
	if attempt meets all requirements then:
		return attempt
	else if attempt could reach the goal:
		for each i in possible_options do:
			Append i to attempt
			solution = BackTrack(attempt,possible_options)
			if solution = True then:
				return solution
	Pop the last element from attempt
	return False