Number of ways to reach from a starting position to an ending position in C++
In this tutorial, we are going to learn how to find the Number of ways to reach from a starting position to an ending position in a matrix type path in C++, considering we can only travel rightward and downward. This problem is a standard dynamic programming problem.
To reach a particular cell (i,j), one must first reach either the cell (i-1,j) or the cell (i,j-1) and then move one step down or to the right respectively to reach cell (i,j). We will try to formulate a bottom-up dynamic programming solution. We will have to use the following recurrence relation:
numofWays(i,j) = numofWays(i-1,j) + numofWays(i,j-1)
Now, we need to find out the base cases and the rest will be calculated by the following relation. Considering a 2×2 matrix:
We can travel either through (0,0) -> (0,1) -> (1,1) or (0,0) -> (1,0) -> (1,1). So the total number of ways will be two. Now let us try to implement this idea in our code to get the required answer.
C++ Program to find the Number of ways to reach from a starting position to an ending position
Cpp source code:
// Program to find Number of ways to reach from a starting position to an ending position #include <bits/stdc++.h> using namespace std; int main() { int x,y; cout<<"Enter number of rows and columns :"; cin>>x>>y; int NumofWays[x][y]; // Declaring table to store previous values which we have travelled NumofWays[0][0] = 1; // Declaring base case for(int i=1;i<x;i++) { NumofWays[i][0] = 1; } // Declaring base case for(int i=1;i<y;i++) { NumofWays[0][i] = 1; } // Bottom up approach to solve this problem for(int i=1;i<x;i++) { for(int j=1;j<y;j++) { NumofWays[i][j] = NumofWays[i-1][j] + NumofWays[i][j-1]; } } cout<<"Number of ways from(0,0) to ending positon is "<<NumofWays[x-1][y-1]; return 0; }
Input/Output:
Enter number of rows and columns :3 3 Number of ways from(0,0) to ending position is 6
The time complexity of this program is o( n*n).
Also check:
Travelling Salesperson Problem using Dynamic Approach in C++
Activity Selection Problem using Greedy method in C++
Do not forget to comment if you find anything wrong in the post or if you want to share some information regarding the same.
Leave a Reply