LeetCode -- Minimum Path Sum
2015-12-01 09:34
411 查看
题目描述:
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.
Note: You can only move either down or right at any point in time.
在一个m*n的矩阵中,从左上角的位置开始向右下移动,每次只能走右或下。每个单元格包含1个非负数得到和s,每走一步累加这个数字。求从左上到右下路径中的最小s。
思路:
1.dp问题。初始化dp[0,0] = grid[0,0]。
2.初始化第一行和第一列:dp[i,0] = dp[i-1,0] + grid[i,0];dp[0,i] = dp[0,i-1] + grid[0,i]
3.从[i,j](初始化为[1,1])的位置向下走,从dp[i-1,j]与dp[i,j-1]中取最小值min,设置dp[i,j] = min + grid[i,j]。
4.最后的dp[row-1,col-1]即为最小和。
实现代码:
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.
Note: You can only move either down or right at any point in time.
在一个m*n的矩阵中,从左上角的位置开始向右下移动,每次只能走右或下。每个单元格包含1个非负数得到和s,每走一步累加这个数字。求从左上到右下路径中的最小s。
思路:
1.dp问题。初始化dp[0,0] = grid[0,0]。
2.初始化第一行和第一列:dp[i,0] = dp[i-1,0] + grid[i,0];dp[0,i] = dp[0,i-1] + grid[0,i]
3.从[i,j](初始化为[1,1])的位置向下走,从dp[i-1,j]与dp[i,j-1]中取最小值min,设置dp[i,j] = min + grid[i,j]。
4.最后的dp[row-1,col-1]即为最小和。
实现代码:
public class Solution { public int MinPathSum(int[,] grid) { var row = grid.GetLength(0); var col = grid.GetLength(1); var dp = new int[row,col]; dp[0,0] = grid[0,0]; // set first column for(var i = 1;i < row; i ++){ dp[i,0] = dp[i-1,0] + grid[i,0]; } // set first row for(var i = 1;i < col; i ++){ dp[0,i] = dp[0,i-1] + grid[0,i]; } // from [1,1] to [m,n] for(var i = 1;i < row; i++){ for(var j = 1;j < col; j++){ dp[i,j] = Math.Min(dp[i-1,j], dp[i,j-1]) + grid[i,j]; } } return dp[row-1,col-1]; } }
相关文章推荐
- Resharper的使用
- c指针在函数调用过程中的问题
- cf 红名计划!
- java的常见异常与错误总结
- 安装windows server Hyper-v
- 安装windows server Hyper-v
- Q:按F12进行网络安装系统时,一直无法进入,提示加载失败?
- java 中遇见的面试题。
- ViewPager+FragmentPagerAdapter+RadioGroup实现顶部菜单栏
- 七个你无法忽视的Git使用技巧
- 【译】用Fragment解决屏幕旋转(状态发生变化)状态不能保持的问题
- Java 接口和抽象类区别
- 关于在ios设备中 span,div等点击事件无效
- Perl 引用与匿名数组
- JAVA异常设计原则
- 计划借阅书目
- SSRS No Delay for First Report of the Day
- J2EE项目中异常处理
- MyBatis源码浅析
- Viewpager最后到最前循环滑动