Unique Paths

A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below).
The robot can only move either down or right at any point in time. The robot is trying to reach the bottom-right corner of the grid.
How many possible unique paths are there?

Example 1:

Input: m = 3, n = 7
Output: 28

Approach

Java


public class UniquePaths {
    public static void main(String[] args) {
        int m = 3, n = 7;
        System.out.println(uniquePaths(m, n));
    }

    // count unique path from
    // top left corner to bottom
    // right corner
    private static int uniquePaths(int mint n) {
        // base case
        if (m == 0)
            return 0;
        int dp[][] = new int[m][n];
        for (int i = 0; i < m; i++)
            dp[i][0] = 1;
        for (int i = 0; i < n; i++)
            dp[0][i] = 1;
        for (int i = 1; i < m; i++) {
            for (int j = 1; j < n; j++) {
                dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
            }
        }
        return dp[m - 1][n - 1];
    }
}

C++

#include <bits/stdc++.h>
using namespace std;

//count unique path from
//top left corner to bottom 
//right corner
int uniquePaths(int mint n
{
    //base case
    if(m==0)
        return 0;
    int dp[m][n];
    for(int i=0;i<m;i++)
        dp[i][0]=1;
    for(int i=0;i<n;i++)
               dp[0][i]=1;
    for(int i=1;i<m;i++)
        {
            for(int j=1;j<n;j++)
            {
                dp[i][j]=dp[i-1][j]+dp[i][j-1];
            }
     }
   return dp[m-1][n-1];
}
int main()
{
    int m=3,n=7;
    cout<<uniquePaths(m,n);
    return 0;
}


No comments:

Post a Comment