题解 | 数水坑
数水坑
https://www.nowcoder.com/practice/664ca4289fcf457ba3109fdf4a7a1a05
package main
import (
"bufio"
"fmt"
"os"
)
var (
addX = [8]int{0, 0, 1, -1, 1, 1, -1, -1}
addY = [8]int{1, -1, 0, 0, 1, -1, 1, -1}
)
func dfs(x, y, n, m int, sli []string, marked [][]bool) {
marked[x][y] = true
for k := 0; k < 8; k++ {
nx := x + addX[k]
ny := y + addY[k]
if nx >= 0 && ny >= 0 && nx < n && ny < m && !marked[nx][ny] && sli[nx][ny] == 'W' {
dfs(nx, ny, n, m, sli, marked)
}
}
}
func main() {
reader := bufio.NewReader(os.Stdin)
var n, m int
fmt.Fscan(reader, &n, &m)
sli := make([]string, n)
for i := 0; i < n; i++ {
fmt.Fscan(reader, &sli[i])
}
marked := make([][]bool, n)
for k, _ := range marked {
marked[k] = make([]bool, m)
}
count := 0
for i := 0; i < n; i++ {
for j := 0; j < m; j++ {
if sli[i][j] == 'W' && !marked[i][j] {
count++
dfs(i, j, n, m, sli, marked)
}
}
}
fmt.Print(count)
}


查看21道真题和解析