栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

不同路径c

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

不同路径c

一个机器人位于一个 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
 

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/unique-paths
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

int uniquePaths(int m, int n){
 int dp[m][n];
    int i,j;

    for(int i = 0;i < m;++i){
        for(int j = 0;j < n;++j){
            if(i == 0 || j == 0){
                dp[i][j] = 1;使边界上的点为1
                
            }
            else{
                dp[i][j] =  dp[i-1][j]+dp[i][j-1];到该点的路径是上面和左面的相加
            }
        }
    }
    return dp[m-1][n-1];
    
}

该题运用了动态规划的方法 。

规划算法介绍

1)动态规划(Dynamic Programming)算法的核心思想是:将大问题划分为小问题进行解决,从而一步步获取最优解的处理算法

2)动态规划算法与分治算法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。

3)与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。 ( 即下一个子阶段的求解是建立在上一个子阶段的解的基础上,进行进一步的求解 )

4)动态规划可以通过填表的方式来逐步推进,得到最优解.

这个题代码不是很难,但是难在如何理解

问总共有多少条不同的路径?

                             0                      1         2         3               4             5             6

机器人111111 
1234567
13610152128

 这是通过解题思路所画的题,我也是看了视频才明白,这是我看了视频自己的理解,因为只能向下和向右所以上边框和右边框只能是一,因为只有一种方法可以到达,(1,1)的2很容易可以看出来,(2,1)也可以看出来然后依次类推可以得知到达一个格的的路径是上一个格和和左面格相加得到的,然后就可以写了,我也是刚学动态规划,所有我认为这个题可以让我们对动态规划有一个更好的了解,我也希望对你们也有所帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1001777.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号