题解 | #求路径#

求路径

http://www.nowcoder.com/practice/166eaff8439d4cd898e3ba933fbc6358

题目思路:这道题目其实很一道很经典的动态规划题目,题目意思很好理解,就是找从起点到终点的所有可行的路径。

约束的两个条件:

机器人每次只能往右或者往下走
机器人不能越界
我们看到这张图就明白一切:
从起点1开始 当i>1 j>1时, 到达第2行第2列的格子有2种路径, 第2行第3列有3中路径....
图片说明
方法一:经典使用dp数组

有了上面的两个条件,我们就可以解决这个题目了。

我们定义一个二维dp数组,dp[i] [j] 表示从起点到我当前位置(i行j列)有多少条可行的路径,因为我们从约束条件中可以知道,机器人每次只能往右或者往下走,则我们当前点必定是从上面或者左边走过来的(除边界外)。

当然,如果在地图的最上面或者最左边的话,最上面的点只能是从左边走到的,最左边的点只能是从上面走到的。

则我们可以定义状态方程:

当 i > 1 && j > 1 : dp[i] [j] = dp[i] [j-1] + dp[i-1] [j]

当 i = 0:dp[0] [j] = dp[0] [j-1]

当 j = 0:dp[i] [0] = dp[i-1] [0]

import java.util.*;


public class Solution {
    /**
     * 
     * @param m int整型 
     * @param n int整型 
     * @return int整型
     */
    public int uniquePaths (int m, int n) {

        int[][] dp = new int[m][n];

        for (int i = 0; i < m; i++) {

            for (int j = 0; j < n; j++) {

                // 当 i = 0:dp[0][j] = dp[0][j-1]
                if (i == 0) {
                    // 都是1是因为dp[0][j] = dp[0][j-1],所以干脆全部赋值为1
                    dp[i][j] = 1;
                    continue;
                }

                // 当 j = 0:dp[i][0] = dp[i-1][0]
                if (j == 0) {
                    dp[i][j] = 1;
                    continue;
                }

                // 当 i > 1 && j > 1 :  dp[i][j] = dp[i][j-1] + dp[i-1][j]
                dp[i][j] = dp[i][j-1] + dp[i-1][j];
            }
        }

        // 返回到达终点的所有可行路径
        return dp[m-1][n-1];
    }
}
刷刷题 文章被收录于专栏

刷刷题 活跃活跃脑细胞

全部评论

相关推荐

||&nbsp;先说下主播个人情况:211本,暑期实习之前有过一段中大厂的后端实习,暑期拿过腾讯的实习offer,综合考虑业务和语言最终去了美团。实习期间体感还是不错的,5月初去的,去了就一直急着要需求做,担心因为没有产出导致转正失败,在第二个星期就和mt透露我希望能够留用。虽然第一个由于美团新人landing的友好性基本没做什么需求,但是后面也写出了小2w行的代码量(不包含单测)。中期经常主动加班赶需求,经常持续一两个星期加班到10点甚至更后面。mt对我确实不错,也是言传身教,实习期间给我讲了很多关于单测,ddd,set化等的理解,也是受益匪浅,此外在做需求的时候,也能看出把比较有含金量的部分交给我做...
菜菜菜小白菜菜菜:我在字节实习了四个月,有转正的压力所以周末大部分也在公司自学,也是因为一些原因转正拖的很久,这个点还没答辩,过段时间才回去答辩。整个不确定性的焦虑贯穿了我的秋招三个月,我也曾经犹豫过是不是应该放弃转正走秋招更快,最后因为沉没成本一直舍不得放弃,前前后后七个月真的挺累的,尤其是没有来字节实习的同学已经校招拿到意向时更加焦虑。这段时间也跟mentor聊了很多次,他告诉我未来工作上或者生活上,比这些更头疼的事情会更多,关键还是要调整好自己的心态。转正没有通过从过程上来看其实跟你自身没太大的关系,拖了三个月不出结果显然是ld的问题,并且今年美团最近的开奖大家似乎都不是很乐观,所以不去也罢。我在字节实习的时候,6月份有一个赶上春招末期的25届同事刚面进来,也拿到了小sp的薪水。不要对这件事有太大的压力,时代的问题罢了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务