ZBLOG

var result int var visited [][]bool func digit(x int) int { result := 0 for x != 0 { result += x % 10 x /= 10 } return result } func DFS(i, j, cnt, m, n int) { // 向右 if i + 1 < m { if digit(i + 1) ...

代码中的问题是在 digit 函数内部定义了一个新的局部变量 result,而没有使用全局变量 result。因此,每次递归调用时,全局变量 result 的值都保持为0。

要解决这个问题,你需要将 result := 0 改为赋值给全局变量 result 的语句:result = 0

修正后的代码如下:

var result int
var visited [][]bool

func digit(x int) int {
    res := 0
    for x != 0 {
        res += x % 10
        x /= 10
    }
    return res
}

func DFS(i, j, cnt, m, n int) {
    // 向右
    if i+1 < m {
        if digit(i+1)+digit(j) <= cnt && !visited[i+1][j] {
            visited[i+1][j] = true
            result++
            DFS(i+1, j, cnt, m, n)
        }
    }
    // 向下
    if j+1 < n {
        if digit(i)+digit(j+1) <= cnt && !visited[i][j+1] {
            visited[i][j+1] = true
            result++
            DFS(i, j+1, cnt, m, n)
        }
    }
}

func wardrobeFinishing(m int, n int, cnt int) int {
    result = 0
    visited = make([][]bool, m)
    for i := 0; i < m; i++ {
        visited[i] = make([]bool, n)
    }
    DFS(0, 0, cnt, m, n)
    return result
}

修正后的代码会正确使用全局变量 result 进行计数。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=16805

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?