题解 | 数水坑

数水坑

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)
}

全部评论

相关推荐

想去毕业旅行的斑马在...:学校不是92的话,没有实习经历投不了大厂,去投中小厂,拿点实习经历
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务