leetcode | Minimum Path Sum
2015-07-25 21:18
260 查看
Minimum Path Sum : https://leetcode.com/problems/minimum-path-sum/
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.
解析:
本题是一个动态规划类型的题目,
求 grid[0][0] 到 grid[rows-1][cols-1]的最小路径和
设m[i][j]表示从grid[0][0]到grid[i][j]的最小路径和,那么
m[0][0] = grid[0][0];
m[0][j] = m[0][j-1] + grid[0][j];
m[i][0] = m[i-1][0] + grid[i][0];
m[i][j] = min(m[i-1][j], m[i][j-1]) + gird[i][j];
由上述条件等式,容易写出动态规划的程序:
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.
解析:
本题是一个动态规划类型的题目,
求 grid[0][0] 到 grid[rows-1][cols-1]的最小路径和
设m[i][j]表示从grid[0][0]到grid[i][j]的最小路径和,那么
m[0][0] = grid[0][0];
m[0][j] = m[0][j-1] + grid[0][j];
m[i][0] = m[i-1][0] + grid[i][0];
m[i][j] = min(m[i-1][j], m[i][j-1]) + gird[i][j];
由上述条件等式,容易写出动态规划的程序:
class Solution { public: int minPathSum(vector<vector<int>>& grid) { int rows = grid.size(); int cols = grid[0].size(); int result = 0; if (rows == 0 || cols == 0) return 0; int** m = new int*[rows]; for (int i = 0;i < rows; i++) m[i] = new int[cols]; // 动态规划,从小问题迭代求解 for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { if (i == 0 && j == 0) { m[i][j] = grid[i][j]; } else if (i == 0) { m[i][j] = m[i][j-1] + grid[i][j]; } else if (j == 0) { m[i][j] = m[i-1][j] + grid[i][j]; } else { m[i][j] = min(m[i-1][j], m[i][j-1]) + grid[i][j]; } } } result = m[rows-1][cols-1]; for (int i = 0; i < rows; i++) delete m[i]; delete m; m = NULL; return result; } };
相关文章推荐
- LoadRunner通用函数整理
- hdu5303Delicious Apples
- poj1163 简单DP
- 嵌入式linux之LCD驱动层次分析
- C#连接Access数据库(详解)
- [java] 线程池
- 黑马程序员----- c语言结构体
- Turing equation
- 二叉树的基本运算
- ssh命令通过制定端口连接远程服务器
- CocoaPods的基本使用方法
- 【YII2学习笔记】20150725-2
- 记我的前端起始之路
- C. Watto and Mechanism
- oracle 表或视图不存在
- RabbitMQ
- Codeforces Round #179 (Div. 2) C Greg and Array 两个线段树
- F - Ilya Muromets-
- Web前端从入门到精通-8 css简介——清除浮动
- css图片实现水平、垂直居中