2018年网站建设发言,如何开发app软件平台,虚拟网站官网,做中英文网站多少钱【力扣】62. 不同路径
一个机器人位于一个 m m m x n n n 网格的左上角 #xff08;起始点在下图中标记为 “Start” #xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角#xff08;在下图中标记为 “Finish” #xff09;。问总共有多少条…【力扣】62. 不同路径
一个机器人位于一个 m m m x n n n 网格的左上角 起始点在下图中标记为 “Start” 。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角在下图中标记为 “Finish” 。问总共有多少条不同的路径
示例 1 输入m 3, n 7 输出28
示例 2 输入m 3, n 2 输出3
解释 从左上角开始总共有 3 条路径可以到达右下角。 向右 - 向下 - 向下 向下 - 向下 - 向右 向下 - 向右 - 向下
示例 3 输入m 7, n 3 输出28
示例 4 输入m 3, n 3 输出6
提示 1 m, n 100 题目数据保证答案小于等于 2 * 1 0 9 10^9 109
题解
确定 dp 数组以及下标的含义 dp[i][j] 表示从 (0,0) 出发到 (i, j) 有 dp[i][j] 条不同的路径。确定递推公式 想要求 dp[i][j]只能有两个方向来推导出来即 dp[i - 1][j] 和 dp[i][j - 1]。 dp[i - 1][j] 表示是从 (0, 0) 的位置到 (i - 1, j) 有几条路径dp[i][j - 1]同理 dp[i][j] dp[i - 1][j] dp[i][j - 1]因为 dp[i][j] 只有这两个方向过来。dp 数组如何初始化 dp[i][0] 一定都是1因为从 (0, 0) 的位置到 (i, 0) 的路径只有一条那么 dp[0][j] 也同理。确定遍历顺序 dp[i][j] 都是从其上方和左方推导而来举例推导 dp 数组打印 dp 数组
public class Solution {public static int uniquePaths(int m, int n) {//dp数组定义int[][] dp new int[m][n];//初始化for (int i 0; i m; i) {dp[i][0] 1;}for (int i 0; i n; i) {dp[0][i] 1;}//遍历for (int i 1; i m; i) {for (int j 1; j n; j) {dp[i][j] dp[i - 1][j] dp[i][j - 1];}}return dp[m - 1][n - 1];}
}