c语言迷宫求解所有路径_迷宫中的老鼠(2)

本课程是从少年编程网转载的课程,目标是向中学生详细介绍计算机比赛涉及的编程语言,数据结构和算法。编程学习最好使用计算机,请登陆 www.3dian14.org (免费注册,免费学习)。

之前我们讨论了迷宫中的老鼠的例子。现在我们改变老鼠走迷宫的条件,允许老鼠一次走多个格子。

我们用下面的例子来描述新的老鼠走迷宫的问题。

1285879eb9f0b61b876043e6bcd5f7a9.png

上图是一个N * N 二维矩阵形状的迷宫(矩阵简称为M),有一只老鼠从左上角的单元格,即M [0] [0]出发,试图走到右下角的出口,即M[N-1][N-1]。灰色的方格表示死胡同,不允许老鼠进入。老鼠可以向下或向右移动。与上一题不同的是,现在允许老鼠每次移动一个或多个格子,但是允许移动的格子数是有规定的,具体规定由下面的矩阵来描述。

430aeda88cb0b5f22f975bc4e1d185fb.png

上面的矩阵指定了从每个方格M[i][j](0≤i≤N-1,0≤j≤N-1)中,大鼠可以向右移动多个格子(例如:到M[i][j+s]),或向下的若干格子(例如:到M [i+s][j]),其中最大步数(或s的最大值)由单元格中的值M[i][j]来限定。如果任何方格包含0,那么这是一个死胡同。例如:M[0][0]的值是2,表示老鼠最多一次可以跳转2步,它可以从M[0][0]跳转到以下任何一个方格:M[0][1],M[0][2],M[1][0]或M[2][0]。但由于单元格M[1][0]的值是0,死胡同,实际上老鼠不能进入该单元格,所以老鼠实际可以从M[0][0]跳转到的有效单元方格是:M[0][1],M[0][2]或M[2][0]。

上面例子的一个可能的路径如下图所示。

4c96b54cccb6bf593e38fb83f2d8ff46.png

如果用大小为N * N的矩阵的形式打印从老鼠M[0][0]跳跃到M[N-1][N-1]的可能路径,并且使处于路径中的所有单元格的值为1,而不在路径中的其他单元格的值为0。那么上面例子的对应路径如下图所示。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值