参考答案
方法一(正向思维):
对于每一个点作为起点进行 dfs, 若此点值为 'X' 或者位于边界则跳过, 否则对此点的上下左右 4 个点进行同样的操作.
若 dfs 过程中能够到达区域边界, 则跳过此点;
若不能到达区域边界, 则以该点为起点重新进行上述条件的 dfs, 并标记遍历到的每一个点为 'X'
方法二(正难则反):
将区域中所有的 'O' 标记为 'Z';
从区域中每一个边界的标记为 'Z' 的节点作为 dfs 的起点出发, 若遇到非 'Z' 节点则跳过, 并将遇到的 'Z' 节点标记为 'O'.
将区域中所有剩余的 'Z' 节点标记为 'X'.