64. Minimum Path Sum
来源:互联网 发布:医疗网络咨询招聘 编辑:程序博客网 时间:2024/06/05 15:53
题目
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.
解答
方法一:递归
这个方法会超过时间限制
调用moveStep(grid,1,1)
;
int moveStep(vector<vector<int>>& grid, int m, int n) { int row = grid.size(); int col = grid[0].size(); int a = 0; int b = 0; if (row == m && col == n) return grid[m - 1][n - 1]; if (m < row && n < col) { a = moveStep(grid, m + 1, n); b = moveStep(grid, m, n + 1); if (a > b) a = b; } else if(m < row && n == col) { a = moveStep(grid, m + 1, n); } else if (m == row && n < col) { a = moveStep(grid, m, n + 1); } return grid[m - 1][n - 1] + a;}
方法二:动态规划
int minPathSum(vector<vector<int> > &grid) { if (grid.size() == 0) return 0; vector<vector<int>> res(grid); int i, j; for (int j = 1; j<res[0].size(); ++j) { res[0][j] += res[0][j - 1]; } for (int j = 1; j<res.size(); ++j) { res[j][0] += res[j - 1][0]; } for (i = 1; i<res.size(); ++i) { for (int j = 1; j<res[i].size(); ++j) { res[i][j] = min(res[i - 1][j], res[i][j - 1]) + grid[i][j]; } } return res[grid.size() - 1][grid[0].size() - 1]; }
0 0
- 64. Minimum Path Sum
- 64. Minimum Path Sum
- 64.Minimum Path Sum
- 64. Minimum Path Sum
- 64. Minimum Path Sum
- 64. Minimum Path Sum
- 64. Minimum Path Sum
- 64. Minimum Path Sum
- 64. Minimum Path Sum
- 64. Minimum Path Sum
- 64. Minimum Path Sum
- 64. Minimum Path Sum
- 64. Minimum Path Sum
- 64. Minimum Path Sum
- 64. Minimum Path Sum
- 64. Minimum Path Sum
- 64. Minimum Path Sum
- 64.Minimum Path Sum
- Linux的-bash-4.2$
- android控件截图
- 利用selenium实现截图
- Python-学习-项目1-即时标记-1
- 按home键后,程序后台运行,再次打开应用时,不再走启动页面,直接进入应用
- 64. Minimum Path Sum
- RSA ~ 非对称加密算法
- 创建使用管理员身份打开的快捷方式
- 手机web——自适应网页设计(html/css控制)
- c++函数如何返回多值,返回数组的函数该如何调用
- 【OpenCV入门教程之十二】OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑
- 设置cookie指定时间失效
- itop4412添加按键key
- hadoop的伪分布环境安装