Apart from the recursive solutions an iterative approach for solving the lattice path problem exists as well.

Again full credit goes to Pim Spelier. I really need to find this guy online. So I can properly link to him.

All my work is to translate the given algorithm to Java and dissect it in a way, so that I can understand the solution.

Without further ado…

The algorithm performs nicely within a blink of a second. Even if I increase the grid size above 20.

So how does it work?

First we create a two-dimensional array. Let’s use the 2×2 grid as an example.

As of *long[][] grid = new long[gridHeight + 1][gridWidth + 1]* our empty two-dimensional array looks like this:

Actually all grid cells hold an initial value of 0.

Next step is to fill the grid partially:

*for (int i = 0; i <= gridHeight; i++) {*

* grid[i][0] = 1;*

* }*

* for (int j = 0; j <= gridWidth; j++) {*

* grid[0][j] = 1;*

* }*

And then we fill in the remaining slots:

*for (int i = 1; i <= gridHeight; i++) {*

* for (int j = 1; j <= gridWidth; j++) {*

* grid[i][j] = grid[i – 1][j] + grid[i][j – 1];*

* }*

* }*

After the first iteration (i = 1 and j = 1) the grid looks like this:

After the second iteration (i = 1 and j = 2):

Third iteration (i = 2 and j = 1):

And finally (i = 2 and j = 2), which is exactly Pascal’s triangle:

There is one more blog post to write about this problem. It will be about a combinatorial solution.