深度优先搜索和广度优先搜索算法的简单对比实例一 二维数组模拟地图上的点移动

本文通过一个二维数组模拟的地图案例,比较了深度优先搜索(DFS)和广度优先搜索(BFS)在寻找从起点到终点最短路径问题中的应用。DFS采用递归策略,遇到障碍物会回溯;BFS利用队列,依次探索所有可能的路径。案例中,给定5x4的地图,输出从(0,0)到目标点的最短步数为7。" 113937558,10297010,电商库存管理系统:同步与异步扣库策略,"['数据库', '电商技术', '库存系统', '分布式事务', '并发控制']
摘要由CSDN通过智能技术生成

此实例是解决寻找一张地图上(二维数组模拟的)从一个点到达另外指定的一个点需要的最少的移动步骤,其中地图上某点可能是障碍物不能跨越
地图信息约定:0表示空地,1表示目的地,-1表示障碍物,(0,0)表示的是默认起始点

一、深度优先搜索法
从初始起点开始对四个方向进行穷举,直到遇到目的点,递归的调用自己

#include<iostream>
using namespace std;
int min = 100000000;
int n, m;
void dfs(int a[30][30], int x, int y, int step)
{
   
	if (a[x][y] == 1)//到达目的点
	{
   
		if (min > step)//移动步骤数比较
		{
   
			min=step;
		}
		return;
	}
	else
	{
   
		for (int i = 1; i <= 4; i++)//每个点都可能进行四个方向的移动
		{
   
			int tx = x, ty = y;
			if (i == 1)//向上
				tx = tx - 1;
			else if (i == 2)//向下
				tx = tx + 1;
			else if (i == 3)//向左
				ty = ty - 1;
			else if (i == 4)//向右
				ty = ty + 1;
			if (tx < 0 || ty < 0 || tx >= n||ty >= m|| a[tx][ty] == -
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值