题目
64. 最小路径和
我的思路
动态规划,用一个新的二维数组存储从左上角到当前方格的最短路径和。从左至右,从上至下开始扫描二维数组,在新的二维数组中path[i][j]=min(path[i-1][j],path[i][j-1]) + path[i][j]
直到计算出最右下角的值。
我的实现
class Solution { public: int minPathSum(vector<vector<int>>& grid) { //申请存储路径的二维数组 vector<int> line(grid[0].size()+1,0); vector<vector<int>> path(grid.size()+1,line); for(int i=0;i<grid.size();i++){ for(int j=0;j<grid[0].size();j++) if(i==0){path[i+1][j+1]=path[i+1][j]+grid[i][j];} else if(j==0){path[i+1][j+1]=path[i][j+1]+grid[i][j];} else path[i+1][j+1]=min(path[i][j+1],path[i+1][j]) + grid[i][j]; } return path[grid.size()][grid[0].size()]; } }; //动态规划,用一个新的二维数组存储从左上角到当前方格的最短路径和。 /*从左至右,从上至下开始扫描二维数组,在新的二维数组中path[i][j]=min(path[i-1][j],path[i][j-1]) + path[i][j] 直到计算出最右下角的值 */