package leetcode;

/**
 * https://leetcode.com/problems/unique-paths/
 */
public class Problem62 {
    public int uniquePaths(int m, int n) {
        int[][] dp = new int[m][n];
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                if (i == 0 || j == 0) {
                    dp[i][j] = 1;
                } else {
                    dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
                }
            }
        }
        return dp[m - 1][n - 1];
    }

//    public int uniquePaths(int m, int n) {
//        Integer[][] memo = new Integer[m + 1][n + 1];
//        return uniquePaths(m, n, 1, 1, memo);
//    }
//
//    private int uniquePaths(int m, int n, int x, int y, Integer[][] memo) {
//        if (x > m || y > n) {
//            return 0;
//        }
//        if (x == m && y == n) {
//            return 1;
//        }
//        if (memo[x][y] != null) {
//            return memo[x][y];
//        }
//        int a = uniquePaths(m, n, x + 1, y, memo);
//        int b = uniquePaths(m, n, x, y + 1, memo);
//        int result = a + b;
//        memo[x][y] = result;
//        return result;
//    }
}

@@ -196,21 +196,26 @@
 i = 
-0; i %3C m; i++
+m - 1; i %3E= 0; i--
 ) %7B%0A
@@ -243,21 +243,26 @@
 j = 
-0; j %3C n; j++
+n - 1; j %3E= 0; j--
 ) %7B%0A
@@ -286,17 +286,21 @@
 f (i == 
-0
+m - 1
  %7C%7C j ==
@@ -300,17 +300,21 @@
 %7C%7C j == 
-0
+n - 1
 ) %7B%0A    
@@ -404,17 +404,17 @@
  = dp%5Bi 
--
++
  1%5D%5Bj%5D +
@@ -422,17 +422,17 @@
 dp%5Bi%5D%5Bj 
--
++
  1%5D;%0A   
@@ -492,20 +492,12 @@
  dp%5B
-m - 1%5D%5Bn - 1
+0%5D%5B0
 %5D;%0A 

Update problem 62