Minimum Path Sum--lintcode
来源:互联网 发布:宝宝鼻屎 知乎 编辑:程序博客网 时间:2024/06/05 00:43
Description
Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path.
Notice
You can only move either down or right at any point in time.
分析:思路和这个一样unique paths一样。
套用一下别人的动态规划解释:动态规划三要素:问题的阶段,每个阶段的状态以及从前一个阶段转化到后一个阶段之间的递推关系。递推关系必须是从次小的问题开始到较大问题之间的转化,从这个角度来说,动态规划往往可以用递归程序来实现,不过因为递推可以充分利用前面保存的子问题的解来减少重复计算,所以对于大规模问题来说,有递归不可比拟的优势,这也是动态规划算法的核心之处。确定了动态规划的这三要素,整个求解过程就可以用一个最优决策表来描述,最优决策表是一个二维表,其中行表示决策的阶段,列表示问题状态,表格需要填写的数据一般对应此问题在某个阶段某个状态下的最优值(如最短路径,最长公共子序列,最大价值等),填表的过程就是根据递推关系,从1行1列开始,以行或者列优先的顺序,依次填写表格,最后根据整个表格的数据通过简单的取舍或者运算求得问题的最优解。
从00 到m-1 n-1的最短路径。也可能是从00到11的最短路径。这路径就两条 从左边00-10 或者从上边00-01.这两条路径哪个小选择哪个。然后11的值就是11本身的值+两者较小的值。
所以利用两个for循环 grid[i][j]+=(grid[i-1][j]
public int minPathSum(int[][] grid) { // write your code herefor(int i=1;i<grid.length;i++){for(int j=1;j<grid[i].length;j++){ if(j-1==0){ grid[i][j-1]+=grid[i-1][j-1]; } if(i-1==0){ grid[i-1][j]+=grid[i-1][j-1]; } grid[i][j]+=(grid[i-1][j]<grid[i][j-1])?grid[i-1][j]:grid[i][j-1]; if(i==grid.length-1 && j==grid[i].length-1){ return grid[i][j]; }}}return 0; }
- [Lintcode]Minimum Path Sum
- Minimum Path Sum--lintcode
- 20150708 lintcode 总结 Minimum Path Sum
- lintcode minimum-path-sum 最小路径和
- LeetCode: Minimum Path Sum
- LeetCode Minimum Path Sum
- LeetCode : Minimum Path Sum
- [Leetcode] Minimum Path Sum
- Minimum Path Sum
- Minimum Path Sum
- [LeetCode] Minimum Path Sum
- [Leetcode] Minimum Path Sum
- Minimum Path Sum
- [LeetCode]Minimum Path Sum
- Minimum Path Sum
- Minimum Path Sum
- Minimum Path Sum
- Minimum Path Sum
- ubuntu16.04+gtx1080ti+caffe安装记录
- springboot mybatis-generator自动生成bean和dao
- 我是这么绕过苹果ID锁的
- python 穷举算法
- 为何ajax-get方式的请求只执行一次?
- Minimum Path Sum--lintcode
- MATLAB与VS混合编程
- 关于项目404错误快速排查
- nodejs学习(一)-package.json 依赖包具体详解
- python变量可以=函数
- 用PYTHON第一次写的SOCKET通信
- osb错误代码
- 软件架构的5种视图
- 在Windows上使用Ubuntu共享的打印机