1045 Fire Net

问题描述:假定我们有一个正方形的城市,城市中有笔直的街道。城市的地图是一个n行n列的正方形面板,每个表示一条街道或者一面墙。

碉堡是一个四面开放可供射击的小型城堡。四个方向分别朝向北东南西。有一把机关枪通过每个开口射击。

我们假定一个强力枪管可以穿过任意距离摧毁它路径上的碉堡。另一方面,墙十分坚固,可以阻挡炮管。

目标是在城市中放置尽可能多的碉堡,使得其中的任意两个都不可以互相毁坏。碉堡的合法设置应该是同一水平线和同一垂直线上不能同时存在两个碉堡,除非它们被墙分隔开。在这个问题中我们考虑到正方形城市(最多4x4)包含炮管不能穿过的墙。

下面的图片展示了五张同一面板的图。第一张是空的,第二张和第三张是合法的设置,第四和第五张图是不合法的设置。对于这个面板,最大的碉堡数目是5个;图二是一种方法,但是还有几种其他的方法。

你的任务是写一个程序,给定一个地图的描述,计算可以在该城市地图中合法放置的最大碉堡数。

输入:输入文件包括一个或多个地图的描述,最后一行是数字0表示输入结束。每个地图的描述以一行包括一个正整数n开始,n是城市的大小;n最大值为4。接下来的N行每一行描述了地图中的一行,'.'表示一个开放的空间,大写的'X'表示一面墙。输入中没有空格。

输出:每个测试用例输出一行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值