HDU 1885 Key Task(状态压缩+BFS)

这道题和UVA上面的一道题目很类似,需要钥匙的题目,那道题是开关,也差不多。不同的是,那道题不需要走到需要关灯的房间就能控制,而这个需要走到门的位置。还有就是房间的表示是不一样的,那个是一维的这个是二维。

但是思想都是一样

题目:矩阵,有的地方有钥匙,有的地方有门,有的是墙,有的是起点还有终点,还有路。门必须用相应的钥匙可以打开。出口有多个,这个要注意。

第一次wa就是wa在这里了,因为,在break一次后,外层循环也需要一个break,可以小妞我给忘了!!!

好吧,说一下分析:主要有一点药想明白,标记什么,状态怎么表示!状态这里,无非就是设计了两个东西,一个是位置,另一个是手里的钥匙的情况。可以用一个数组表示手里钥匙的情况,但是为了便于标记,把这个钥匙的情况压缩一下,就妥妥哒了!

数据不大,开始我想用的是map来标记,可惜如果key是结构体的话,那么需要用重载的,我就是傻呀,不会先试一下呀,这下可好,写了一大篇子代码,编译不过,这我就不高兴了,于是果断重写,用三维数组来表示,好在数据不大。下面就来表示一下重载的怎么写,学习的链接:http://bbs.chinaunix.net/thread-1538318-1-1.html

接着来说,千万不要标记已经走过的格子,因为拿完钥匙可以再走,这是允许的

好了,千言万语,尽在代码之中:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值