这一题是一道搜索题。和以前做过的最大黑区域有着很大的相似之处。
都是利用递归进行搜索。
但是最大的不同就是,粉刷迷宫由于要先求出可以和外界相通的迷宫。
所以必须从最外围进行搜索,然后标记出可以和外界相通的路。
最后对内部需要粉刷的墙壁和外部需要粉刷的墙壁进行统计。
最后得出的结果就是总共需要粉刷的墙壁了。
其实这题还可以用栈来做。
算法思想见严蔚敏的数据结构的栈那一章。最后提到的迷宫求解。
如果从某个点出发,无法找到出口,那么这个点就是被墙壁围住的点。
但是这样需要对每个点进行扫描,效率没有第一种的高,而且复杂性也增强了。
下面是代码。