大佬 为啥我这样写只有60%,想到走过的路要再走了,但是还是没过

func numberOfPatrolBlocks(m int, n int, block [][]int32) (res int32) {
dx := []int{0, 1, 0, -1}
dy := []int{1, 0, -1, 0}
x, y, d := 0, 0, 0
st := make([][]int, m)
for i := 0; i < m; i++ {
st[i] = make([]int, n)
}
var tt func(int, int) bool
tt = func(a, b int) bool {
if a >= 0 && a < m && b >= 0 && b < n && st[a][b] < 1000 && block[a][b] == 0 {
return true
}
return false
}
var check func(int, int) bool
check = func(a, b int) bool {
for i := 0; i < 4; i++ {
k := (d + i) % 4
aa, bb := x+dx[k], y+dy[k]
if tt(aa, bb) {
d = k
return true
}
}
return false
}
for true {
if st[x][y] == 0 {
//fmt.Println(x, y)
res++
}
st[x][y]++
if !check(x, y) {
break
}
x, y = x+dx[d], y+dy[d]
}
return
}