leetcode_1219

淳属虚构 · · 418 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

Golang:

思路:深度优先加回溯,这题递归写起来很简单,但这题的非递归写法要如何写呢?

代码如下:

func getMaximumGold(grid [][]int) int {
    res:=[]int{0}
    for i:=0;i<len(grid);i++{
        for j:=0;j<len(grid[0]);j++{
            dfsMaxGold(grid,i,j,0,res)
        }
    }
    return res[0]
}

func dfsMaxGold(grid [][]int,row,col,sum int,res []int){
    if grid[row][col]!=0{
        temp:=grid[row][col]
        sum+=temp
        grid[row][col]=0
        f1,f2,f3,f4:=false,false,false,false
        if row>0&&grid[row-1][col]!=0 {
            dfsMaxGold(grid,row-1,col,sum,res)
        }else{
            f1=true
        }
        if row<len(grid)-1&&grid[row+1][col]!=0 {
            dfsMaxGold(grid,row+1,col,sum,res)
        }else{
            f2=true
        }
        if col>0&&grid[row][col-1]!=0 {
            dfsMaxGold(grid,row,col-1,sum,res)
        }else{
            f3=true
        }
        if col < len(grid[0])-1 && grid[row][col+1]!=0 {
            dfsMaxGold(grid,row,col+1,sum,res)
        }else{
            f4=true
        }
        if f1&&f2&&f3&&f4&&sum>res[0]{
            res[0]=sum
        }
        grid[row][col]=temp
    }
}

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:淳属虚构

查看原文:leetcode_1219

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

418 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传