leetcode-64. 最小路徑和
阿新 • • 發佈:2021-07-17
和62題不同路徑一樣,使用dfs方法同樣超時。
class Solution { public: vector<int> res; int minPathSum(vector<vector<int>>& grid) { int m = grid.size(); int n = grid[0].size(); vector<vector<bool>> visited(m, vector<bool>(n,false)); path(grid,visited,0,0,0); sort(res.begin(), res.end()); return res[0]; } void path(vector<vector<int>> grid,vector<vector<bool>> visited,int i, int j, int sum){ // int temp = sum; int m = grid.size(); int n = grid[0].size(); if(i<0||i>=m||j<0||j>=n||visited[i][j]) return; if(i==m-1&&j==n-1){ sum = sum + grid[i][j]; res.push_back(sum); return; } sum = sum + grid[i][j]; visited[i][j] = true; path(grid, visited,i,j+1,sum); path(grid, visited,i+1,j,sum); visited[i][j] = false; // 復原 } };