定义一个二维数组:
int maze[5][5] = { |
它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。
此题题意比较简单,就是找一条左上到右下的最短路,并打印出来。这种简单的最短路直接 $BFS$ 就解决了。稍微麻烦一点在于打印,那么该如何去储存这条最短路线呢?题目明确指出打印出坐标,那直接用个 $pair$ 储存一下 $x,\ y$ 就好了,可以尝试建立一个 $pair$ 数组,又需要路线,那我们存一下前驱坐标就行了。问题来了,从哪端开始存方便一些,如果从起始坐标 $(0,\ 0)$ 处就存的话,结点必然不唯一,比如说离 $(0, \ 0)$ 距离为 $1$ 的可能就好几个(ps:此处不理解的话可以去看看 floodfill)。所以尝试一下从结尾处开始存,结尾处的结点前驱就唯一了,想一想为什么?然而从结尾开始存的话又需要一个栈倒一下顺序,那直接从 $(4,\ 4)$ 向 $(0,\ 0)$搜索就好了。
|
FROM:wywwzjj
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论