leetcode 不同路径

这个题目很容易想到用 dp 来做,而且状态转移方程也很简单,

标准方程是 :dp[i][j] = dp[i-1][j] + dp[i][j-1].

我的方程:dp[i][j] = dp[i-1][j] + dp[i][j-1] + dp[i][j]。 多加了一个。因为我预处理的时候,把所有带 0 的部分都处理成了 0,然后dp[1][1] 设置的为1.

这样其实并不好用。

更好的方法,if(j ==0 || j == 0) dp[i][j] = 1;

复杂度为 N*2

代码

class Solution {
    public int uniquePaths(int m, int n) {
        int dp[][] = new int[m+1][n+1];
        for(int i = 0; i < m + 1; i++){
            dp[i][0] = 0;
        }
        for(int i = 0; i < n + 1; i++){
            dp[0][i] = 0;
        }
        dp[1][1] = 1;
        for(int i = 1; i < m+1; i++)
            for(int j = 1; j < n+1; j++){
                dp[i][j] = dp[i-1][j] + dp[i][j-1] + dp[i][j];
            }
        return dp[m][n];
    }
}
原文地址:https://www.cnblogs.com/stul/p/11540790.html