粉刷迷宫

粉刷迷宫

Time Limit: 1 Seconds     Memory Limit: 32768 K

Total Submit:108     Accepted:26


Description

话说最近PhoenixWright最近太闲了,于是就自己建了个迷宫自娱自乐。但是这迷宫实在是太难看了,都吸引不了MM来玩= =。于是他想给这迷宫的墙刷上好看的颜色,但是由于Money有限,他又不想把所有的墙都刷上颜色,于是他请你来帮忙,把迷宫里所有能看到的墙都给刷上颜色,不能看到的墙就不要刷。
比如我们给出一个4X5的迷宫,用’#’表示墙,用’.’表示可走的空间


那么,如图所示,红线圈出的部分就是需要粉刷的部分。
写一程序计算对于所给的迷宫,需要粉刷多少单位的墙,如上例必须粉刷24单位的墙。

Input

多组测试数据。
对于每组测试数据,第一行是m,n,代表所给迷宫的行数与列数,接下来m行是仅由’#’和’.’构成的字符串,代表一个m*n的迷宫。
1<=m,n<=50

Output

对于每个测试例,输出需要粉刷多少单位的墙

Sample Input

4 5
##..#
#.#.#
#.#.#
#####

 

Sample Output

24
解题思路:这题主要就是扫掉迷宫最外围的墙壁,统计外围要粉刷几个墙。然后标记最外围的路,因为最外围的路所对的墙一定是可以看见
的,所以我们就从标记的路开始扫描他的上下左右,是墙壁就+1,是路就再对它的四周扫描,所以这是一个递归的过程。记住扫描过的路
就要再次进行标记,以免重复计算。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值