Minimum Path Sum
来源:互联网 发布:论文数据造假查不出来 编辑:程序博客网 时间:2024/05/19 04:28
Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right whichminimizes the sum of all numbers along its path.
Note: You can only move either down or right at any point in time.
题目解析:
(1)A[m][n] = min(A[m-1][n]+grid[m][n] , A[m][n-1]+grid[m][n] ) 递归子结构
(2)单存的递归,显然时间是会超时的。因此我们使用备忘录的方式。
#include <iostream>#include <vector>using namespace std;int recursionPathSum(int **A,vector<vector<int> > &grid,int m,int n);int minPathSum(vector<vector<int> > &grid) {int m = grid.size();int n = grid[0].size();int **A = (int **)malloc(sizeof(int *)*m);for(int i=0;i<m;i++){A[i] = (int *)malloc(sizeof(int)*n);for(int j=0;j<n;j++){A[i][j] = -1;}}A[0][0] = grid[0][0];return recursionPathSum(A,grid,m-1,n-1);}int recursionPathSum(int **A,vector<vector<int> > &grid,int m,int n){if(A[m][n] != -1)return A[m][n];int result = 0;if(m == 0){for(int i=0;i<=n;i++){result = result + grid[m][i];}A[0][n] = result;return result;}if (n == 0){for(int i=0;i<=m;i++){result += grid[i][n];}A[m][0] = result;return result;}int res = min(recursionPathSum(A,grid,m-1,n)+grid[m][n],recursionPathSum(A,grid,m,n-1)+grid[m][n]);A[m][n] = res;return res;}int main(void){vector<vector<int> > grid;vector<int> temp1;temp1.push_back(1);temp1.push_back(2);grid.push_back(temp1);vector<int> temp2;temp2.push_back(3);temp2.push_back(4);grid.push_back(temp2);vector<int> temp3;temp3.push_back(5);temp3.push_back(6);grid.push_back(temp3);cout << minPathSum(grid) << endl;system("pause");return 0;}
0 0
- LeetCode: Minimum Path Sum
- LeetCode Minimum Path Sum
- LeetCode : Minimum Path Sum
- [Leetcode] Minimum Path Sum
- Minimum Path Sum
- Minimum Path Sum
- [LeetCode] Minimum Path Sum
- [Leetcode] Minimum Path Sum
- Minimum Path Sum
- [LeetCode]Minimum Path Sum
- Minimum Path Sum
- Minimum Path Sum
- Minimum Path Sum
- Minimum Path Sum
- [leetcode]Minimum Path Sum
- Minimum Path Sum
- LeetCode-Minimum Path Sum
- [leetcode] Minimum Path Sum
- HDU 5024 Wang Xifeng's Little Plot (bfs)
- Oracle的几种循环语句
- c++格式化输出问题
- perl正则命名分组捕获
- Perl语言问题
- Minimum Path Sum
- 9.20
- Generate Parentheses
- ubuntu 备份与恢复
- CentOS yum 源的配置与使用
- Apache James邮件服务器配置及发送外网邮件
- mysql.connector.errors.ProgrammingError: 1049 (42000): Unknown database 'test'
- HDU 5023 A Corrupt Mayor's Performance Art (线段树)
- 详解内网IP外网IP的关联及访问互联网原理