Skip to content

Instantly share code, notes, and snippets.

@gabhi
Created June 21, 2014 18:49
Show Gist options
  • Save gabhi/2d882ee081c7c0061b16 to your computer and use it in GitHub Desktop.
Save gabhi/2d882ee081c7c0061b16 to your computer and use it in GitHub Desktop.
Count number of path from top left to bottom right in matrix
#include <iostream>
using namespace std;
// Returns count of possible paths to reach cell at row number m and column
// number n from the topmost leftmost cell (cell at 1, 1)
int numberOfPaths(int m, int n)
{
// Create a 2D table to store results of subproblems
int count[m][n];
// Count of paths to reach any cell in first column is 1
for (int i = 0; i < m; i++)
count[i][0] = 1;
// Count of paths to reach any cell in first column is 1
for (int j = 0; j < n; j++)
count[0][j] = 1;
// Calculate count of paths for other cells in bottom-up manner using
// the recursive solution
for (int i = 1; i < m; i++)
{
for (int j = 1; j < n; j++)
// By uncommenting the last part the code calculatest he total
// possible paths if the diagonal Movements are allowed
count[i][j] = count[i-1][j] + count[i][j-1]; //+ count[i-1][j-1];
}
return count[m-1][n-1];
}
// Driver program to test above functions
int main()
{
cout << numberOfPaths(3, 3);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment