【题目描述】
编程计算由‘*’号围成的下列图形的面积。面积的计算方法是统计*号所围成的闭合曲线中水平线和垂直线交点的数目。如图所示,在 10*10 的二维数组中,有*围住了 15 个点,因此面积为 15。
0 0 0 0 0 0 0 0 0 0
0 0 0 0 * * * 0 0 0
0 0 0 0 * 0 0 * 0 0
0 0 0 0 0 * 0 0 * 0
0 0 * 0 0 0 * 0 * 0
0 * 0 * 0 * 0 0 * 0
0 * 0 0 * * 0 * * 0
0 0 * 0 0 0 0 * 0 0
0 0 0 * * * * * 0 0
0 0 0 0 0 0 0 0 0 0
【输入】
一 个 10*10 的 二维 数 组, 里 面的 数 为 0 和 1,1 代 表着 *号 。
【输出】
一 个整 数 ,被 围 住的 点 。
【样例输入】
0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 0 0 0
0 0 0 0 1 0 0 1 0 0
0 0 0 0 0 1 0 0 1 0
0 0 1 0 0 0 1 0 1 0
0 1 0 1 0 1 0 0 1 0
0 1 0 0 1 1 0 1 1 0
0 0 1 0 0 0 0 1 0 0
0 0 0 1 1 1 1 1 0 0
0 0 0 0 0 0 0 0 0 0
【样例输出】
15
==============题解===============
Dfs或bfs。
开始想的是找到一个在区域之内的点,之后从这个点开始bfs,但其实应该标记曲线外部的点再用100减容易一点。
首先将边缘的点记为2,即这些点不可能在范围内,之后遍历每一个为0的点,若此点的上下左右有点为2,那么这个点也不会在范围内,最后统计还有多少为零的点。