Question
http://www.lintcode.com/en/problem/unique-paths/A robot is located at the top-left corner of a m x n grid.
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
Given m = 3 and n = 3, return 6.Given m = 4 and n = 5, return 35.
Given m = 6 end = 63, return 9657648
Answer
// brute force solution, Time Limit Exceeded // help us get dp formula pattern // res[i][j] = res[i-1][j] + res[i][j-1]; public int uniquePaths(int m, int n) { return helper(1, 1, m, n); } private int helper(int row, int col, int m, int n) { if(row == m && col == n) return 1; if( row > m || col > n) return 0; return helper(row+1, col, m, n) + helper(row, col+1, m, n); }
// dp solution class Solution { public: /* * @param m: positive integer (1 <= m <= 100) * @param n: positive integer (1 <= n <= 100) * @return: An integer */ int uniquePaths(int m, int n) { // write your code here if (m <= 0 || n <= 0) return 0; vector<int> res(n); res[0] = 1; for (int i = 0; i < m; i++) { for (int j = 1; j < n; j++) { res[j] += res[j-1]; } } return res[n-1]; } };
No comments:
Post a Comment