##题目描述
小青蛙有一天不小心落入了一个地下迷宫,小青蛙希望用自己仅剩的体力值P跳出这个地下迷宫。为了让问题简单,假设这是一个n*m的迷宫。迷宫每个位置为0或者1. 0代表这个位置有障碍物,小青蛙到达不了这个位置;1代表小青蛙可以达到的位置。小青蛙初始在(0,0)位置。地下迷宫的出口在(0,m-1)(保证这两个位置都是1,并且保证一定有起点到终点可达的路径)。小青蛙在迷宫中水平移动一个单位距离需要消耗1点体力值。向上爬一个单位距离需要消耗3个体力值,向下移动不消耗体力值。当小青蛙的体力值等于0时候还没有到达出口,小青蛙将无法逃离迷宫。现在需要你帮助小青蛙计算出能否用今生的体力值跳出迷宫(即达到(0,m-1)的位置
输入:
输入 n+1行:
第一行为3个整数n,m(3<=m,n<=10),P(1<=P<=100)
接下来的n行:
每行m个0或者1,以空格分隔
输出:
如果能逃离迷宫,则输出一行体力消耗最小的路径,输出格式见样例所示;如果不能逃离迷宫,则输出“Can not escape!”。
测试数据保证答案唯一
输入例子:
- 4 4 10
- 1 0 0 1
- 1 1 0 1
- 0 1 1 1
- 0 0 1 1
输出例子:
[0,0],[1,0],[1,1],[2,1],[2,2],[2,3],[1,3],[0,3]
思路:层次遍历(这个思想真的蛮重要的..),每次更新最佳值,直到找到了终点,个人感觉比 dfs 好使..(也有 dfs 代码)。后来做的乐视那个蚂蚱跳跃的题目也是如此,过几天忙过去在更新上来.做题的时候一定要先想思路,别急着代码..磨刀不误砍柴工!
1 | import java.util.ArrayList; |
2016年09月20日01:05:30