迷宫最短路径(C++)

本文探讨了如何解决迷宫最短路径问题,通过暴力算法和优化剪枝策略来寻找从起点到终点的最少步数。文章提供了一段C++代码实现这一过程,其中介绍了在遍历过程中如何利用剪枝技巧提高效率。
摘要由CSDN通过智能技术生成

迷宫最短路问题

接上次经典迷宫问题
问题这次迷宫问题不仅要求判断是否能够找到通路,并且要求找到最短能到达迷宫所需的步数,即最短路径问题

暴力算法对每个结点进行遍历,记录每种路径的步数;
优化剪枝当遍历步数大于ans之前第一次找到ans初始化值为无穷大,当第一次找到通路路径后,ans被第一次step替换。之后的每次路径只要比前一次step小,就会被step小的替代;
剪枝:而在寻找通路的过程中,只要步数大于了前一次所找通路的step,这次寻找终止,返回下一次寻找;

代码如下:

#include <stdio.h>
#include <iostream>
using namespace std;
char Map[50][50];
int n,m,p,q,vis[50][50],ans,flag;
const int N=1000;
int dir[4][2]={
   {
   -1
  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值