大佬们都说简单而我暴力超时的dp题目
64. 最小路径和
class Solution { public: // vector<int> allAns; // int minPathSum(vector<vector<int>>& grid) { // int ans = 0; // int m = grid.size(); // int n = grid[0].size(); // goWay(ans, grid, 0 , 0); // return *std::min_element(allAns.begin(), allAns.end()); // } // void goWay(int tempans, vector<vector<int>> grid, int x, int y){ // if(x == grid.size()-1 && y == grid[0].size()-1){ // tempans+=grid[x][y]; // allAns.push_back(tempans); // } // if(x >= grid.size() || y >= grid[0].size()) // return; // tempans += grid[x][y]; // goWay(tempans, grid, x+1, y); // goWay(tempans, grid, x, y+1); // } int minPathSum(vector<vector<int>>& grid) { if (grid.size() == 0 || grid[0].size() == 0) { return 0; } int rows = grid.size(), columns = grid[0].size(); auto dp = vector < vector <int> > (rows, vector <int> (columns)); dp[0][0] = grid[0][0]; for (int i = 1; i < rows; i++) { dp[i][0] = dp[i - 1][0] + grid[i][0]; } for (int j = 1; j < columns; j++) { dp[0][j] = dp[0][j - 1] + grid[0][j]; } for (int i = 1; i < rows; i++) { for (int j = 1; j < columns; j++) { dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]) + grid[i][j]; } } return dp[rows - 1][columns - 1]; } };