class Solution { public: /** * * @param matrix int整型vector<vector<>> the matrix * @return int整型 */ int minPathSum(vector<vector<int> >& matrix) { // write code here int m[matrix.size()][matrix[0].size()]; int i; int j; m[0][0] = matrix[0][0]; for(i = 1, j = 0; i < matrix.size();i++) { m[i][j] = matrix[i][j] + m[i-1][j]; } for(i = 0, j = 1; j < matrix[0].size(); j++) { m[i][j] = matrix[i][j] + m[i][j-1]; } for(i = 1, j = 1; i < matrix.size() && j < matrix[0].size(); i++, j++) { for(int k = i; k < matrix.size(); k++) { m[k][j] = min(m[k-1][j]+matrix[k][j], m[k][j-1]+matrix[k][j]); } for(int q = i; q < matrix[0].size(); q++) { m[i][q] = min(m[i-1][q]+matrix[i][q], m[i][q-1]+matrix[i][q]); } } if(i < matrix.size()) { for(j = matrix[0].size()-1; i < matrix.size();i++) { m[i][j] = min(m[i-1][j], m[i][j-1]) + matrix[i][j]; } } if(j < matrix[0].size()) { for(i = matrix.size()-1; j < matrix[0].size();j ++) { m[i][j] = min(m[i-1][j], m[i][j-1]) + matrix[i][j]; } } // for(i = 0; i < matrix.size();i++) // { // for(j = 0; j < matrix[0].size(); j++) // { // cout<< m[i][j] << " "; // } // cout<<endl; // } return m[matrix.size()-1][matrix[0].size()-1]; } };