第一行输入两个整数
。
接下来
行,每行
个字符组成的字符串,字符集为 `W` 与 `.`,中间无空格。
输出一行一个整数,即水坑的数量。
10 12 W........WW. .WWW.....WWW ....WW...WW. .........WW. .........W.. ..W......W.. .W.W.....WW. W.W.W.....W. .W.W......W. ..W.......W.
3
共有三个水塘:一个在左上角,一个在左下角,还有一个沿着右侧。const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
while(line = await readline()){
const [N, M] = line.split(' ').map(Number);
const mtx = Array(N);
for (let i = 0; i < N; i++) {
mtx[i] = (await readline()).split('');
}
const visited = Array.from({length: N}, () => Array(M).fill(false));
const dfs = function(i, j) {
if (i < 0 || i >= N || j < 0 || j >= M || visited[i][j] || mtx[i][j] === '.') return;
visited[i][j] = true;
dfs(i - 1, j); // 上
dfs(i + 1, j); // 下
dfs(i, j - 1); // 左
dfs(i, j + 1); // 右
dfs(i - 1, j - 1); // 左上
dfs(i - 1, j + 1); // 右上
dfs(i + 1, j - 1); // 左下
dfs(i + 1, j + 1); // 右下
};
let count = 0;
for (let i = 0; i < N; i++) {
for (let j = 0; j < M; j++) {
if (mtx[i][j] === '.' || visited[i][j]) continue;
dfs(i, j);
count++;
}
}
console.log(count);
}
}()