回溯法求迷宫问题

本文通过回溯法解决迷宫问题,利用C语言编写程序,展示如何在m行n列的矩阵迷宫中从指定入口找到出口。虽然找到的路径不一定是最短的,但能判断是否存在路径。
摘要由CSDN通过智能技术生成
回溯法(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。
本文使用回溯法求解迷宫问题
迷宫问题,有一个m行n列的矩阵代表迷宫,1代表此路不通,0代表此路通。指定入口和出口,判断是否能从入口进,从出口走出。此程序只判断从路口到出口是否能走通,找到的路不一定是最短路(最短路的程序在下一篇中使用BFS算法给出),注意:从入口到出口可能没有路径或者不止一条路径。此处迷宫走法是8个方向,分别是左上,上,右上,右,右下,下,左下,左。程序中使用offsets myMove给出八个方向的表示。
#include <iostream>
#include <stack>
using namespace std;


struct offsets 
{
	int a,b;//a,b是x,y方向的偏移
	char* dir;//dir方向
};
offsets myMove[8] = {//各个方向的偏移表
	{-1,0,"N"},
	{-1,1,"NE"},
	{0,1,"E"},
	{1,1,"SE"},
	{1,0,"S"},
	{1,-1,"SW"},
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值