[Leetcode]-Minimum Path Sum
2015-07-22 20:30
323 查看
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.
Hide Tags :Array ,Dynamic Programming
Hide Similar Problems :(M) Unique Paths (H) Dungeon Game
题目:m*n的表格中每个格子存放有一个随机数(非负数),求出从左上角到右下角的一条路径使之为最小元素和。方向只能向右或者下。
思路:动态规划,状态转移矩阵:
r[j] = grid[i][j] + (r[j] < r[j-1] ? r[j] : r[j-1]) ;
r[0] = grid[0][0];
r[j] = r[j-1] + grid[0][j];
O(space) = n 解决方案
Note: You can only move either down or right at any point in time.
Hide Tags :Array ,Dynamic Programming
Hide Similar Problems :(M) Unique Paths (H) Dungeon Game
题目:m*n的表格中每个格子存放有一个随机数(非负数),求出从左上角到右下角的一条路径使之为最小元素和。方向只能向右或者下。
思路:动态规划,状态转移矩阵:
r[j] = grid[i][j] + (r[j] < r[j-1] ? r[j] : r[j-1]) ;
r[0] = grid[0][0];
r[j] = r[j-1] + grid[0][j];
O(space) = n 解决方案
int minPathSum(int** grid, int gridRowSize, int gridColSize) { int *r = (int*)malloc(sizeof(int)*gridColSize); for(int i=0;i<gridRowSize;i++) { for(int j=0;j<gridColSize;j++) { if(0 == i && 0 == j) r[0] = grid[0][0]; else if(0 == i && 0 != j) r[j] = r[j-1] + grid[0][j]; else if(0 != i && 0 == j) r[0] = r[0] + grid[i][0]; else r[j] = grid[i][j] + (r[j] < r[j-1] ? r[j] : r[j-1]) ; } } int r1 = r[gridColSize - 1]; free(r); return r1; }
相关文章推荐
- jquery ready 延迟
- 字符串
- Apple Watch 开发探索日志 (一)
- 关于stm32用J-link,ITM机制下动态调试
- android解决相机开关的问题
- 阿里笔试题
- Java Log4j打印在WebRoot/log/
- Jquery statuscode处理
- git学习笔记-6 git reset(重置)
- git学习笔记-7 git checkout 切换分支
- OC_字典
- vi与gedit的区别
- 多校第一场 1010 hdu 5297 Y sequence(容斥+二分)
- Android系统代码本地更新Linux shell脚本2
- linux下vi命令大全
- 如何熟悉一个开源项目
- git学习笔记-5 git 暂存区(2)
- PL/SQL 自动补全
- 提高页面访问速度
- Object类、JAVA的异常处理机制