1219. Gold Miner

Insérez la description de l'image iciEh bien, c'est une récursivité.
Condition de fin de jugement: tout autour.
Donc, selon cette idée, jugez d'abord s'il y a des nombres autour, puis jugez si c'est 0.
Est-ce que 0, allez dans la direction suivante, pas zéro, récursif. En fin de compte, il y aura toujours des cas où les environs sont tous à 0, et à ce moment, la valeur maximale est jugée.

class Solution {
public:
    int max_=0;
    int px[4]={0,0,-1,1};
    int py[4]={1,-1,0,0};
    int getMaximumGold(vector<vector<int>>& grid) {
        for(int i=0;i<grid.size();i++){
            for(int j=0;j<grid[0].size();j++){
                if(grid[i][j]!=0) {
                    int tep=grid[i][j];
                    grid[i][j]=0;
                    dfs(grid,i,j,tep);
                    grid[i][j]=tep;
                }
            }
        }
        return max_;
    }
    void dfs(vector<vector<int>>& grid,int x,int y,int sum){
        
        int row=grid.size();
        int col=grid[0].size();
        for(int i=0;i<4;i++){
            if(x+px[i]>=0&&x+px[i]<row&&y+py[i]>=0&&y+py[i]<col&&grid[x+px[i]][y+py[i]]!=0){
                int tep=grid[x+px[i]][y+py[i]];
                grid[x+px[i]][y+py[i]]=0;
                dfs(grid,x+px[i],y+py[i],sum+tep);
                grid[x+px[i]][y+py[i]]=tep;
            }
        }
        max_=max(sum,max_);
    }
};
Publié 161 articles originaux · J'aime 68 · Visiteurs 20 000+

Je suppose que tu aimes

Origine blog.csdn.net/qq_43179428/article/details/105345631
conseillé
Classement