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 (marked ‘Finish‘ in the diagram below).
How many possible unique paths are there?
参考:戴方勤 (soulmachine@gmail.com) https://github.com/soulmachine/leetcode
深搜(递归) + 备忘录
public class Solution {
private int f[][];
public int uniquePaths(int m, int n) {
f = new int[m+1][n+1];
return dfs(m,n);
}
private int dfs(int m,int n){
if(m<1||n<1) return 0;
if(m==1&&n==1) return 1;
return help(m-1,n)+help(m,n-1);
}
private int help(int m,int n){
if(f[m][n]>0)return f[m][n];
return f[m][n]=dfs(m,n);
}
}
原文地址:http://blog.csdn.net/guorudi/article/details/40150169