题目:
题解:
如果需要达到右下角,可以通过以下两步实现:
- 左边往右走一步
- 从上往下走一步
用dp[i][j]表示达到坐标(i,j)的方案数,那么dp[i][j]=dp[i-1][j]+dp[i][j-1],我们需要对dp方程进行初始化,很明显在左边界只能往下走,即dp[1-i][0]=1,在上边界只有往右走,即dp[0][1-i]=1,最终返回dp[n][m]
public int getBoardPathCount(int n, int m) {
int[][] dp = new int[n + 1][m + 1];
for (int i = 0; i <= n; i++) {
dp[i][0] = 1;
}
for (int i = 0; i <= m; i++) {
dp[0][i] = 1;
}
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
return dp[n][m];
}
时间复杂度:O(n+m)