1219.黄金矿工

在这里插入图片描述嗯,就是个递归完事了。
判断结束条件:周围都是0。
所以呢按着这个思路,先判断周围有没有数字,然后判断是不是0.
是0,走下一个方向;不是零,递归。最终一定会存在周围都是0的情况,这时判断最大值。

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_);
    }
};
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值