#3179. 贪吃的Jerry(jerry)
贪吃的Jerry(jerry)
题目背景
贪吃的 Jerry 闻到了 Tom 家橱柜里的奶酪香气,于是悄悄潜入。橱柜中散布着障碍物,Jerry 的脚上抹了油,这让他移动起来非常迅速,但也带来了一个致命问题——他无法中途刹车!
题目描述
橱柜是一个 的网格矩阵,其中 为行号(从上到下编号为 ), 为列号(从左到右编号为 )。网格中 表示空地, 表示障碍物。
移动规则
Jerry 每次只能选择上、下、左、右四个方向之一开始滑行,一旦启动,他将沿着该直线方向不停移动,直到遇到以下情况之一才会停止:
- 撞上障碍物(即下一个格子为 ),此时停在障碍物前的最后一个空地格子;
- 滑出网格边界,此时停在边界内的最后一个空地格子。 每次完整的滑行过程计为 次滑行。
任务目标
Jerry 从起始坐标 出发,目标是到达奶酪所在的坐标 。若滑行结束时停在奶酪所在的格子,即视为偷取成功。请你计算 Jerry 偷取奶酪所需的最少滑行次数;若无法在 次内到达,输出 (超过k次Jerry就来抓老鼠了!)。
限制条件
Jerry 最多只能进行 次滑行,否则 Tom 就会发现 Jerry。
输入格式
第一行三个正整数 ,分别表示网格的行数、列数和 Jerry 最多能进行的滑行次数。 接下来 行,每行 个整数( 或 ),表示网格矩阵。 最后一行四个整数 ,分别表示 Jerry 的起始坐标和奶酪的坐标。
输出格式
输出一行一个整数,表示最少滑行次数;若无法在 次内到达,输出 。
输入输出样例 #1
输入 #1
4 5 5
0 0 1 0 0
0 0 0 0 0
1 0 1 0 1
0 0 0 0 0
1 5 4 1
输出 #1
3
输入输出样例 #2
输入 #2
3 5 100
0 1 0 0 0
1 1 1 1 1
0 0 0 1 0
1 5 3 3
输出 #2
-1
输入输出样例 #3
输入 #3
4 5 2
0 0 1 0 0
0 0 0 0 0
1 0 1 0 1
0 0 0 0 0
1 5 4 1
输出 #3
-1
说明/提示
样例 #1 解释
对于样例 #1:
- 起点为 ,终点为 ,最多可滑行 次,最少仅需 次即可到达:
- 第 次滑行:从起点 向左滑行,遇到障碍物 ,停在 (滑行次数:)。
- 第 次滑行:从 向下滑行,滑至网格下边界,停在 (滑行次数:)。
- 第 次滑行:从 向左滑行,滑至网格左边界,停在 ,成功到达终点(滑行次数:,未超过限制)。 因此输出为 。
数据范围
保证起点与终点均为空地(即值为 的格子),且位于网格边缘。