做网站鼎盛,网站设计制作费用多少,网站怎么换域名,中企动力销售工作内容Java解决不同路径问题
01 题目
一个机器人位于一个 m x n 网格的左上角 #xff08;起始点在下图中标记为 “Start” #xff09;。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角#xff08;在下图中标记为 “Finish” #xff09;。
问总共有多少…Java解决不同路径问题
01 题目
一个机器人位于一个 m x n 网格的左上角 起始点在下图中标记为 “Start” 。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角在下图中标记为 “Finish” 。
问总共有多少条不同的路径
示例 1 输入m 3, n 7
输出28示例 2
输入m 3, n 2
输出3
解释
从左上角开始总共有 3 条路径可以到达右下角。
1. 向右 - 向下 - 向下
2. 向下 - 向下 - 向右
3. 向下 - 向右 - 向下示例 3
输入m 7, n 3
输出28示例 4
输入m 3, n 3
输出6提示
1 m, n 100题目数据保证答案小于等于 2 * 109
02 知识点
二维数组DP(动态规划)
03 我的题解
public class digui01 {
public static void main(String[] args) {
//测试数据uniquePaths(3, 7);}
public static int uniquePaths(int m, int n) {//通过二维数组来记录每个各格子的路径值//路径值指到这个格子的方法数int[][] gridnew int[m][n];//因为每次出发一定会经过第一行或第一列某一格所以设第一行和第一列格子上的值为1for (int i 0; i m; i) {grid[i][0]1;}for (int j 0; j n; j) {grid[0][j]1;}//因为进入中间的格子只能从上方或者左边所以中间格子的路径值为二者之和for (int i 1; i grid.length; i) {for (int j 1; j grid[0].length; j) {grid[i][j]grid[i-1][j]grid[i][j-1];}}//返回值为左下角的路径值return grid[m-1][n-1];}
}