在c++的回溯算法中,有一种非常著名的问题叫做
- 迷 宫 问 题
今天,小编就带来一个简单的例题和讲解。
(完整代码和POJ—3984解决方案见后)
例题
题目
输入一个5*5的迷宫,以左上角为起点,以右下角为终点,输出从起点到终点的路径的长度(数据保证最多只有一条路径),如果没有路径则输出0。
以整数形式输入,
“1”为墙,“0”为空。
输入
一个5*5的迷宫
输出
一个整数,代表从入口到出口的路径的长度,如果没有路径则输出-1。
讲解
迷宫问题基本思路:
进入迷宫后,先随机找到一条路,一步步向前试探前进,如果碰到死胡同,说明前方已无路可走,这时,
- 将该格设置为墙(表明这是死路),再返回一步,看看其它方向是否还有路可走。如果有路可走,则继续递归搜索路径;如果无路可走,则递归此步。
- 按此原则不断搜索回溯再搜索,直到找到新的路径或返回入口处无解为止。
代码
#include<iostream>
using namespace std;
int map[7][7]= //定义地图
{
{
1,1,1,1,1,1,1},
{
1,1,1,1,1,1,1},
{
1,1,1,1,1,1,1},
{
1,1,1,1