题解 | #求路径# 超详细动态规划算法分析

求路径

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

动态规划算法分析:  1.问题:求第一个点到最后一个点的路径数之和  2.状态定义:求(0,0)点到(i,j)点的路径数之和 3.状态转移方程:定义一个数组存储到每个点的路径数之和,因为只能向下或向右移动,所以点(i,j)的路经数之和numpath(i,j)=numpath(i-1,j)+numpath(i,j-1),但是第一行的元素和第一列的元素不满足这个方程,会造成数组越界  4.状态初始化:所以将第一行的元素和第二行的元素的路径和作为初始值,这样才可以递推出(i,j)元素的路径数之和  5.返回结果:numpath(m-1,n-1) 


public class NumberOfPaths {
    public static int uniquePaths(int m, int n) {
        int[][] numpath=new int[m][n];//存储到这个点的路径数之和
        if(numpath.length==0){
            return 0;
        }
        int i=0;
        int j=0;
        for( i=0;i<m;i++){
            numpath[i][0]=1;//第一行的元素作为初始值,到第一行每个元素的路径数都是1,因为不能向下又向上走
        }
        for( j=0;j<n;j++){
            numpath[0][j]=1;//第一列的元素作为初始值,到第一列每个元素的路径数都是1,因为不能向右又向左走
        }
        //从第二行第二列那个元素开始
        for( i=1;i<m;i++){
            for(j=1;j<n;j++){
                numpath[i][j]=numpath[i-1][j]+numpath[i][j-1];//numpath[i,j]的路径数之和是只能是他的左边一个元素的路径数之和加上他的上边一个元素的路径数之和
            }
        }
        return numpath[m-1][n-1];//返回最后一行最后一列元素的路径数之和
    }



全部评论

相关推荐

不愿透露姓名的神秘牛友
06-18 16:32
quench@0916:一顿操作猛如虎,一看工资2500
点赞 评论 收藏
分享
鬼迹人途:你去投一投尚游游戏,服务器一面,第一个图算法,做完了给你一个策略题,你给出方案他就提出低概率问题,答不上当场给你挂
点赞 评论 收藏
分享
05-12 16:04
已编辑
江西财经大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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