YunheWang0813
3/17/2020 - 12:41 AM

1219. Path with Maximum Gold

// 一刷
// 自己做出(O);看答案()
// 1. Accepted
class Solution {
public:
    int getMaximumGold(vector<vector<int>>& grid) {
        if (grid.size() == 0 || grid[0].size() == 0) return 0;
        for (int i = 0; i < grid.size(); i++) {
            for (int j = 0; j < grid[0].size(); j++) {
                dfs(grid, i, j, 0);
            }
        }
        return res;
    }
    void dfs(vector<vector<int>>& grid, int i, int j, int sum) {
        if (i < 0 || i >= grid.size() || j < 0 || j >= grid[0].size() || grid[i][j] == 0) {
            res = max(res, sum);
            return;
        }
        sum += grid[i][j];
        int tmp = grid[i][j];
        grid[i][j] = 0;
        dfs(grid, i + 1, j, sum);
        dfs(grid, i - 1, j, sum);
        dfs(grid, i, j + 1, sum);
        dfs(grid, i, j - 1, sum);
        grid[i][j] = tmp;
    }
private:
    int res = 0;
};