qq怎么做自己的网站,艺术公司网站定制,dede 电商网站模板,应聘的做网站推广的62. 不同路径
一个机器人位于一个 m x n 网格的左上角 #xff08;起始点在下图中标记为 “Start” #xff09;。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角#xff08;在下图中标记为 “Finish” #xff09;。
问总共有多少条不同的路径…62. 不同路径
一个机器人位于一个 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
1、动态规划
class Solution {public int uniquePaths(int m, int n) {if(m1||n1)return 1;//排除行列为1的情况int[][] dp new int[m][n];//定义dp数组为某行某列达到的路径数for(int i 0;i m;i){dp[i][0] 1;//初始化数组第一行第一列的路径数都是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];//返回右下角的路径数}
}
2、卡尔的数论解法
class Solution {
public:int uniquePaths(int m, int n) {long long numerator 1; // 分子int denominator m - 1; // 分母int count m - 1;int t m n - 2;while (count--) {numerator * (t--);while (denominator ! 0 numerator % denominator 0) {numerator / denominator;denominator--;}}return numerator;}
};作者代码随想录
链接https://leetcode.cn/problems/unique-paths/solutions/2562792/dai-ma-sui-xiang-lu-leetcode62bu-tong-lu-ncye/
来源力扣LeetCode
著作权归作者所有。商业转载请联系作者获得授权非商业转载请注明出处。