给定一个填充非负数的m×n网格,找到一条从左上到右下的路径,这个路径将所有数字的总和最小化。
来源:互联网 发布:北京网站排名优化 编辑:程序博客网 时间:2024/06/06 00:44
本题源自leetcode 64
-------------------------------------------------------------------
思路 : 动态规划
1 用一个二维数组dp[i][j]记录到达 i,j 所需要的最小路径和。考虑边界条件。
2 优化 :用一个一维数组来记录到达某一列,需要的最小路径和。
代码:
int minPathSum(vector<vector<int>>& grid) { /* int row = grid.size(); if(row == 0) return 0; int col = grid[0].size(); if(col == 0) return 0; vector<vector<int>> dp(row,vector<int>(col,0)); dp[0][0] = grid[0][0]; for(int i = 1; i < row; i++) dp[i][0] = dp[i-1][0] + grid[i][0]; for(int i = 1; i < col; i++) dp[0][i] = dp[0][i-1] + grid[0][i]; for(int i = 1; i < row; i++) for(int j = 1; j < col; j++) dp[i][j] = min(dp[i-1][j], dp[i][j-1])+grid[i][j]; return dp[row-1][col-1]; */ int row = grid.size(), col = grid[0].size(); vector<int> dp(col,0); dp[0] = grid[0][0]; for(int j = 1; j < col; j++) dp[j] = dp[j - 1] + grid[0][j]; for(int i = 1; i < row; i++){ dp[0] += grid[i][0]; for(int j = 1; j < col; j++) dp[j] = min(dp[j - 1],dp[j]) + grid[i][j]; } return dp[col - 1]; }
阅读全文
0 0
- 给定一个填充非负数的m×n网格,找到一条从左上到右下的路径,这个路径将所有数字的总和最小化。
- 给定一个充满非负数的网格,找到从左上到右下的路径,最小化沿其路径的所有数字的总和。只能向下或向右移动。
- 关于n*m网格从左上到右下的走法数
- 输入一个5乘5的矩阵,输出从左上到右下的路径
- Minimum Path Sum 求方格总从左上到右下的最短路径 简单动态规划
- 编程题:在一个N*N的数组中寻找所有横,竖,左上到右下,右上到左下,四种方向的直线连续D个数字的和里面最大的值
- [编程题]在一个N*N的数组中寻找所有横,竖,左上到右下,右上到左下,四种方向比较
- 节点数值总和等于某个给定值的所有路径
- 给定一个三角形,从顶部到底部找到最小路径和。 每个步骤,您可以移动到下面的行上的相邻数字。
- 经典问题:对于一个m*n的网格,从左上角的方格到右下角的方格,共有多少条路径(只允许向右和向下)
- 给定2个数字,n,m,使得从1到n之间的数字组合,他们的和等于m,求所有组合
- 【31】给定一个二叉树打印出所有从根结点到叶子结点路径和为 k 的路径
- 【31】给定一个二叉树打印出所有从根结点到叶子结点路径和为 k 的路径
- 给定一个数字m和数字n,输出相应的所有排列
- 二叉树的每个节点为0-9的一个数字,根到叶子的一条路径拼成一个数,求所有路径形成的数字和
- Unique Paths 求在矩阵里从左上走到右下的总方法数@LeetCode
- 网易编程:寻找所有横,竖,左上到右下,右上到左下,四种方向的所有和
- 给定一个数组,找到第k到m(0<k<=m<=n)大的数
- 使用提交表单及上传文件(适用于aspx)
- 数据结构实验之查找三:树的种类统计
- Victor and String
- [nodejs]excel表格导出
- 获得绝对路径
- 给定一个填充非负数的m×n网格,找到一条从左上到右下的路径,这个路径将所有数字的总和最小化。
- 简单易懂的状态栏使用详解(2)---状态栏改颜色
- Android PullToRefresh 完全解析
- java里面String,Date,TimeStamp之间的互转
- C#设计模式(9)——装饰者模式(Decorator Pattern)
- 1273 面向对象程序设计上机练习十一(运算符重载)
- javaMail登录并实现邮箱激活功能
- word2vec和word embedding有什么区别?
- 两个群的之积