【Box】

【题目描述】

给定一个A*B的矩阵,其中的数有4种

0:表示空地

1:表示障碍物

2:表示箱子

3:表示按钮

4:表示人所在的位置

现在要你求出人(保证只有一个)将所有箱子推到按钮上所需的最小步数,其中箱子不超过3个,保证矩阵周围一圈都是1.

【输入格式】

两个数A B 表示有A行B列

接下来一个A*B的矩阵,数之间没有空格

【输出格式】

一行一个数,表示最小步数。

【输入样例】

4 5
11111
14231
10231
11111

【输出样例】

4

【数据范围】

1≤A,B≤7

先来看看正解的做法:用dis[P][B1][B2][B3]记录人在P,箱子位置分别是B1 B2 B3位置时最少需要花费的步数,BFS一遍即可。

然而我萨比的写了个枚举每时每刻人走的方向的BFS,13KB……

还是先看看友人的简短代码吧:

好了,我的13KB逗比BFS代码:

 

stdKonjac

stdKonjac

一只挣扎的蒟蒻ACMer

评论太激烈有些评论需要亲动动手指翻页

留下你的评论

*评论支持代码高亮<pre class="prettyprint linenums">代码</pre>

*