上海计算机学会2024年4月月赛C++丙组T5数字迷宫

数字迷宫

内存限制: 256 Mb时间限制: 1000 ms

题目描述

给定一个 n×m 的网格数字迷宫,每个网格上有一个数字,第 i 行、第 j 列网格上的数字为 a(i,j)​ ,表示走到这个格子后,下一次移动可以往上下左右任一方向走 a(i,j)​ 格。

请问,若从网格左上角 (1,1) 位置走到右下角 (n,m) 位置,最少需要走多少次?

输入格式

输入第一行,两个正整数分别表示 n,m
接下来的第 2 行至第 n+1 行,每行 m 个数字,用空格隔开,其中第 i+1 行、第 j 列的数字表示 a(i,j)​ 。

输出格式

输出一个整数,表示最少步数,若无法达到右下角,则输出 No Solution

数据范围
  • 对于 30%的数据,1≤n,m≤10
  • 对于 60%的数据,1≤n,m≤100
  • 对于 100%的数据,1≤n,m≤10^3,1≤ai​≤max(n,m)
样例数据

输入:
3 4
1 2 3 4
1 1 1 1
2 2 2 2
输出:
3
说明:
(1,1)-->(1,2)-->(3,2)-->(3,4) 

解析:标准广度优先搜索,只是移动距离做了变化,详见代码:

 

#include <bits/stdc++.h>
u
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长春高老师信奥工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值