【ATT】Minimum Path Sum

动态规划

    //DP
    
    int minPathSum(vector<vector<int> > &grid) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        if(grid.size()==0)
            return 0;
        int m = grid.size();
        int n = grid[0].size();
        
        vector<vector<int> > minSum;
        
        int i,j;
  
        for(i=0;i<m;i++)
            minSum.push_back(vector<int>(n));
        
        minSum[0][0] = grid[0][0];
        
        for(j=1;j<n;j++)
            minSum[0][j] = grid[0][j]+minSum[0][j-1];
        
        for(i=1;i<m;i++)
            minSum[i][0] = grid[i][0] + minSum[i-1][0];
            
        for(i=1;i<m;i++)
            for(j=1;j<n;j++)
                minSum[i][j] = min(minSum[i-1][j],minSum[i][j-1])+grid[i][j];        
        
        return minSum[m-1][n-1];
    }

 

posted @ 2013-06-23 17:24  summer_zhou  阅读(195)  评论(0)    收藏  举报