
This file contains all the codes used in this course translated in Java.
Explore recursion and backtracking through easy problems, from summing numbers to n, checking symmetry with two pointers, computing factorials, and exploring the three plus one problem.
The Flood-Fill problem is discussed in this video
Explore how divide and conquer underpins merge sort, partitioning arrays recursively and merging sorted halves for an efficient stable sort.
Learn backtracking as an exhaustive search technique within recursion and divide-and-conquer frameworks, generating all combinations and binary strings through iterative choices and base-case printing.
Count magnet chain paths on a grid starting at bottom-left, using exhaustive search with three moves (up, down, or right), and optimize with memoization and dynamic programming (top-down and bottom-up).
Explore an exhaustive grid search using recursion with memoization to count paths from the top-left to bottom-right, avoiding -1 blocked cells by moving right or down.
Explore the gold collector problem, using recursion with two choices: skip or collect, to maximize gold, then apply memoization and bottom-up tabulation to optimize the dynamic program solution.
Explore generating all permutations of a set of distinct elements via backtracking, using a candidate pool to build sequences and filtering to avoid duplicates.
Master backtracking to explore all valid states, using set reset operations and swaps to generate permutations while avoiding revisiting states in exhaustive search.
The lecture revises the maze problem by counting all paths from any start to food through recursive backtracking, using four directional moves and negative barrier cells.
Explore counting knight moves on a custom chessboard with inaccessible cells, using recursion and backtracking to determine paths to a destination, with seven move choices on the board.
Explore the n-queens problem by placing queens on a chessboard so none attack each other, using valid placement checks across rows, columns, and diagonals.
If you have trouble understanding Recursion and Backtracking, which is a recursion based technique, then this course is for you, since it is a course solely dedicated to Recursion and All types of Algorithms related to it.
In this course the Basics of Recursion will be learned. The basic Algorithm Design techniques like Divide and Conquer, Dynamic Programming and Backtracking(Exhaustive Search) will be discussed and many problems related to them will be solved.
Many different type of problems will be solved, from the simplest, finding the sum of numbers, to more difficult ones like Combinations, Permutations, Memoizations and the famous Flood Fill and N-queen Problem.