Number of Paths

Karan Bhandari
2 min readMay 31, 2021


let's go through the question:-

For convenience, let’s represent every square in the grid as a pair (i,j). The first coordinate in the pair denotes the east-to-west axis, and the second coordinate denotes the south-to-north axis. The initial state of the car is (0,0), and the destination is (n-1,n-1).

The car must abide by the following two rules: it cannot cross the diagonal border. In other words, in every step the position (i,j) needs to maintain i >= j. See the illustration above for n = 5. In every step, it may go one square North (up), or one square East (right), but not both. E.g. if the car is at (3,1), it may go to (3,2) or (4,1).

You’re testing a new driverless car that is located at the Southwest (bottom-left) corner of an n×n grid. The car is supposed to get to the opposite, Northeast (top-right), corner of the grid. Given n, the size of the grid’s axes, write a function numOfPathsToDest that returns the number of the possible paths the driverless car can take.

input: n = 4

output: 5

# since there are five possibilities: # “EEENNN”, “EENENN”, “ENEENN”, “ENENEN”, “EENNEN”, # where the ‘E’ character stands for moving one step # East, and the ’N’ character stands for moving one step # North (so, for instance, the path sequence “EEENNN” # stands for the following steps that the car took: # East, East, East, North, North, North)


#include <iostream>
#include <vector>
using namespace std;
// compexity O(n2)
int numOfPathsToDest( int n )
{ vector<vector<int>> vec(n,vector<int>(n,0)); //for dp
for(int i=0;i<n;i++)
for(int i=1;i<n;i++){
for(int j=i;j<n;j++){

vec[i][j] = vec[i][j-1] + vec[i-1][j];
return vec[n-1][n-1];
//driver codeint main(){cout<<numOfPathsToDest(4);return 0;}

You can directly view the code here:-

Happy Coding!!