zoukankan      html  css  js  c++  java
  • 30 Day Challenge Day 14 | Leetcode 1219. Path with Maximum Gold

    题解

    Medium | Backtracking

    class Solution {
    public:
        int getMaximumGold(vector<vector<int>>& grid) {
            int ret = 0;
            for(int i = 0; i < grid.size(); i++) {
                for(int j = 0; j < grid[0].size(); j++) {
                    helper(grid, i, j, 0, ret);
                }
            }
            return ret;
        }
        
        void helper(vector<vector<int>>& grid, int x, int y, int curr,int& max_gold) {
            if(x < 0 || x >= grid.size() || y < 0 || y >= grid[0].size() || grid[x][y] == 0) {
                return;
            }
            
            int dirs[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
    
            if(curr+grid[x][y] > max_gold) {
                max_gold = curr + grid[x][y];
            }
            
            int temp = grid[x][y];
            curr = curr + grid[x][y];
            grid[x][y] = 0;
    
            for(auto& dir : dirs) {
                int next_x = x + dir[0];
                int next_y = y + dir[1];
                helper(grid, next_x, next_y, curr, max_gold);
            }
            
            grid[x][y] = temp;
        }
    };
    
  • 相关阅读:
    dp的冗余(选数类)
    noip2016自测报告
    dalao高精
    二叉苹果树
    最长上升子序列加强版
    Above the Median
    树状数组学习笔记
    Java委托机制
    Java集合
    Java异常
  • 原文地址:https://www.cnblogs.com/casperwin/p/13749052.html
Copyright © 2011-2022 走看看