C++周末训练题-机器人迷宫(BFS)

机器人迷宫


目录

题目描述

一个机器人需要巡逻一个m*n的迷宫(m行n列),一个单元格(i,j)表示第i行第j列,机器人每次只能从一个格子移到另一个格子,并只能像(i+1,j),(i-1,j),(i,j+1),或(i,j-1)这样移动到相邻的格子上。
网格中的一些格子中含有障碍物。为了穿过到含有障碍的格子,机器人必须切换到涡轮增压模式。因此,机器人不能连续穿过超过含k个障碍的网格。
你的任务是写一个程序,使得机器人从(1,1)到第(m,n)个格子的最短路径。输入保证起点与终点无障碍。

格式要求

输入格式
第一行:一个整数T,表示测试组数,每组测试数据的格式为:
第1行:两个整数m,n,表示迷宫的行数和列数, 第2行:一个整数k(k 小于 m 与n),表示允许机器人连续穿越的格子数。最后有m行n列个数字0 和 1,其中1表示第(i,j)个格子有障碍,0表示无障碍。
输出格式
每组数据一个整数表示最短路的长度。如果不能到达则输出-1。

样例

输入

3
2 5
0
0 1 0 0 0
0 0 0 1 0
4 6
1
0 1 1 0 0 0
0 0 1 0 1 1
0 1 1 1 1 0
0 1 1 1 0 0
2 2
0
0 1
1 0

输出

7
10
-1

数据大小

测试组数保证小于30
对于75%的数据 1 <= m,n <= 200
对于另外25%的数据 200 < m,n <= 500

样例说明

测试数据1

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值