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.

class Solution {
public:
    int minPathSum(vector<vector<int>>& grid) {
     int n=grid.size(),m=grid[0].size();
     for(int i=1;i<n;i++)//左侧与上侧值特出处理
     {grid[i][0]+=grid[i-1][0];}
     for(int i=1;i<m;i++)
     {grid[0][i]+=grid[0][i-1];}
     for(int i=1;i<n;i++)
     {
         for(int j=1;j<m;j++)
         {
             grid[i][j]+= min(grid[i-1][j],grid[i][j-1]);//从上来下,一直寻找最小值
         }
     }
     return grid[n-1][m-1];
    }
};
posted @ 2015-11-28 23:07  djiankuo  阅读(134)  评论(0编辑  收藏  举报