进出口在边上的迷宫的一般解法

最近在小百合上看到有人贴了一个迷宫:

Maze Original
有人说SOHU上有人用什么小工具20分钟才走出来,突发奇想,如果自己做个程序几分钟能走出来?因为记得很早(80/90年代)有看过一本名叫《智力》的杂志,每期都有复杂的迷宫,而且走出来之后路线能够形成图案,所以也很好奇这个迷宫走出来是个啥图案。

脑子中第一个闪过的念头就是地球人都知道的迷宫算法:贴着一边的墙走,当然也可以做深度有限/广度优先的搜索,方法是挺简单,就是不知道要用多长时间。

于是想用个东西先试试看,首先想到的是画笔程序,用填充工具在迷宫的空白道路上一点,靠,居然过了几乎有半分钟才出结果。结果令人沮丧,迷宫的道路是连通,所有的路都被涂上颜色了。这个画笔不知道用的什么搜索算法来填充的,真是太慢了。

又改用Photoshop,果然是强,半秒钟不到,它就能把迷宫填满了。可惜问题还是没解决。难道真要自己写个程序?

突然想到在哪里看到过(《皇帝新脑》?)的一个二维动物问题,说一个二维动物如果有口也有另外的肛门,那么这个动物肯定被分成两半了(废话!)。迷宫不就是个分成两半的二维动物吗?“肠道”便是走出迷宫的路线。所以不应该涂“道路”,而应该去涂“墙”。

还是用画笔,用填充工具随便找个黑色的墙一点,这下倒是很快,1秒不到,迷宫被分成了两半,中间的分界便是答案!挺有意思的,所有的这种迷宫应该都可以这样解决了,不用什么其它工具,1秒便可解决。

Maze Solved

不过要说算法的时间复杂度,这个涂墙的方法可能最小复杂度会比找路的大,但是平均复杂度应该差不多。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值