赞
踩
接上次经典迷宫问题
问题:这次迷宫问题不仅要求判断是否能够找到通路,并且要求找到最短能到达迷宫所需的步数,即最短路径问题
暴力算法:对每个结点进行遍历,记录每种路径的步数;
优化剪枝:当遍历步数大于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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。