代码中的问题是在 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助手提供,问题来源于学员提问