题目解析
本题可以使用深度优先搜索来解题。
首先,我们可以遍历矩阵元素,当遍历到“O”时,已该“O”的坐标位置开始向其上、下、左、右方向开始深度优先搜索,每搜索到一个“O”,则该空闲区域数量+1,如果搜索到的“O”的坐标位置处于矩阵第一列,或最后一列,或者第一行,或者最后一行,那么该“O”位置就是空闲区域的入口位置,我们将其缓存到out数组中。
当所有深度优先搜索的分支都搜索完了,则判断out统计的入口数量,
- 如果只有1个,则该空闲区域是符合题意得单入口空闲区域,输出入口坐标位置,以及空闲区域数量。
- 如果有多个,则该区域不符合要求
另外,我们还需要定义一个check集合来缓存,已经被递归过的"O"位置,避免重复的深度优先搜索。
JavaScript算法源码
/* JavaScript Node ACM模式 控制台输入获取 */
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
const lines = [];
let n, m;
rl.on("line", (line) => {
lines.push(line);
if (lines.length === 1) {
[
1072




被折叠的 条评论
为什么被折叠?



