这道题和UVA上面的一道题目很类似,需要钥匙的题目,那道题是开关,也差不多。不同的是,那道题不需要走到需要关灯的房间就能控制,而这个需要走到门的位置。还有就是房间的表示是不一样的,那个是一维的这个是二维。
但是思想都是一样
题目:矩阵,有的地方有钥匙,有的地方有门,有的是墙,有的是起点还有终点,还有路。门必须用相应的钥匙可以打开。出口有多个,这个要注意。
第一次wa就是wa在这里了,因为,在break一次后,外层循环也需要一个break,可以小妞我给忘了!!!
好吧,说一下分析:主要有一点药想明白,标记什么,状态怎么表示!状态这里,无非就是设计了两个东西,一个是位置,另一个是手里的钥匙的情况。可以用一个数组表示手里钥匙的情况,但是为了便于标记,把这个钥匙的情况压缩一下,就妥妥哒了!
数据不大,开始我想用的是map来标记,可惜如果key是结构体的话,那么需要用重载的,我就是傻呀,不会先试一下呀,这下可好,写了一大篇子代码,编译不过,这我就不高兴了,于是果断重写,用三维数组来表示,好在数据不大。下面就来表示一下重载的怎么写,学习的链接:http://bbs.chinaunix.net/thread-1538318-1-1.html
接着来说,千万不要标记已经走过的格子,因为拿完钥匙可以再走,这是允许的
好了,千言万语,尽在代码之中: