2
我刚开始学习DP和试图解决使用相同的(https://leetcode.com/problems/unique-paths/)了解动态编程
机器人位于amxn格的左上角从本文给出了这个问题(注明“开始'在下图中)。
机器人只能在任何时间点向下或向右移动。机器人正在尝试到达网格的右下角(在下图中标记为“完成”)。
有多少种可能的独特路径?
这里是我的尝试:
public class Solution {
public int uniquePaths(int m, int n) {
int [][] grid = new int[m][n];
int [][] memo = new int[m][n];
return uniquePathsHelper(grid,m,n,memo);
}
public int uniquePathsHelper(int [][] grid, int row,int col,int[][]memo){
if(row>grid.length-1 || col>grid[0].length-1) return -1;
if(row == grid.length-1 && col == grid[0].length-1) return 0;
if(memo[row][col]!=0) return memo[row][col];
if(col == grid[0].length-1) memo[row][col] = uniquePathsHelper(grid,row+1,col,memo)+1;
if(row == grid.length-1) memo[row][col] = uniquePathsHelper(grid,row,col+1,memo)+1;
// int rowInc = Integer.MIN_VALUE;
// int colInc = Integer.MIN_VALUE;
// if(row<grid.length-1) rowInc = uniquePathsHelper(grid, row+1,col,memo);
// if(col<grid.length-1) colInc = uniquePathsHelper(grid,row,col+1,memo);
// if(row == grid.length-1 || col == grid[0].length-1) return 1;
// if(row<grid.length-1) return 2;
// if(col<grid[0].length-1) return 2;
if(col< grid[0].length-1 && row < grid.length-1) memo[row][col] = memo[row+1][col] + memo[row][col+1];
System.out.println("Memo["+row+"]["+col+"] = "+memo[row][col]);
return memo[0][0];
}
}
很抱歉,如果这听起来很基本的,我知道我失去了一些东西。任何人都可以指出它有什么问题吗?
可能的[在NxN网格中查找所有路径的算法]的副本(http://stackoverflow.com/questions/9105699/algorithm-for-finding-all-paths-in-a-nxn-grid) – Aaron