ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

牛客网题目:minimum-path-sum 利用动态规划的思想

2020-04-26 22:56:34  阅读:279  来源: 互联网

标签:初始值 int sum 元素 牛客 length minimum grid minimumPathSum


题目描述如下:

牛客网题目:minimum-path-sum   利用动态规划的思想

动态规划的解法:
1.状态的定义
2.状态转换方程
3.初始值
4.返回值

就本题而言:
grid[][]为原数组
```
1.状态的定义 F[i][j]表示从F[0][0]到该位置所经历的最小路径和
2.状态转换方程 F[i][j]=min(F[i][j-1],F[i-1][j])+grid[i][j]
3.初始值 F[0][0]=grid[0][0]
4.返回值 F[m-1][n-1]

链接:https://www.nowcoder.com/questionTerminal/23462ed010024fcabb7dbd3df57c715e?toCommentId=6010099
来源:牛客网

public class Solution{
//先对最左一列和最上一行特殊处理,因为这样的一列和一行中每个元素的来路只有一条,它是固定的。
//然后剩下的内层的矩形框中,每个元素的来路可能来自于左面元素,也有可能来自于上面元素。再加上
//当前元素值就是走到该位置经历的路径最小和
     public int minPathSum(int[][] grid) {
     int m=grid.length;
        int n=grid[0].length;
         if(m==0||n==0){
             return 0;
         }
        int[][] minimumPathSum=new int[m][n];
         minimumPathSum[0][0]=grid[0][0];
        for (int i=1;i<m;i++){
           minimumPathSum[i][0]=grid[i][0]+minimumPathSum[i-1][0];
        }//lie
        for (int j=1;j<n;j++){
            minimumPathSum[0][j]=grid[0][j]+minimumPathSum[0][j-1];
        }
        for (int i=1;i<m;i++){
            for (int j=1;j<n;j++){
                minimumPathSum[i][j]=Math.min(minimumPathSum[i][j-1],minimumPathSum[i-1][j])+grid[i][j];
            }
        }
        return minimumPathSum[m-1][n-1];
     }
}

标签:初始值,int,sum,元素,牛客,length,minimum,grid,minimumPathSum
来源: https://blog.51cto.com/14232658/2490611

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有