64. 最小路径和 - 7月23日

题目

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]
直到计算出最右下角的值
*/

拓展学习

 

posted on 2020-07-23 09:50  BoysCryToo  阅读(105)  评论(0编辑  收藏  举报

导航