小明回家dfs版本

本文介绍了一个使用深度优先搜索(DFS)解决小明回家问题的算法实现。通过递归遍历所有可能的路径,考虑血量和地图约束进行剪枝,并找到最短时间。在边界判断和血量管理的基础上,更新最小时间并进行回溯操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个花费了我一下午的时间写出来的 创作不易情多多支持
1.首先我们需要把思路梳理一遍
小明的位置是变化的 小明位置的变化都会影响的周边的所以我们需要 递归一下 首先确定dfs结束的条件 有2个
dep----是分钟 走一个空格就需要增加1个单位的时间
if(!xue || !map[x][y] ||!vis[x][y])//血量不为空 不是强 不是 已经走过的
if(x<1||x>n||y<1||y>m) 边界判断 return;-------终止
iif(dep>Min) return;----剪枝
if(map[x][y]==3)—如果说已经到达终点那么就取每种路径用时最少的时间
也就是 Min=min(Min,dep);
if(map[x][y]==4)-----移动到鼠标的一个格子的话就满血 赋值xue1=6;
其他的就是非鼠标格子就 xue1=xue-1; 当前的血-1 就是移动到这个
然后记性时间的递增
相邻方向的 时间的增加
走过的路就
vis[x][y]=false;–做个标记
dfs(x,y,dep+1,xue1);
.
.
.
vis[x][y]=true;------回溯一下

在测试方法
要将全部的空格初始化为true
memset(vis,true,sizeof(vis));
#include
using namespace std;
int map[10][10],Min=999999,n,m;
bool vis[10][10];
void dfs(int x,int y,int dep,int xue){
if(!map[x][y]||!vis[x][y]||!xue) return;
if(x<1||x>n||y<1||y>m) return;//边界
if(dep>Min) return;
if(map[x][y]==3){
Min=min(dep,Min);
}
int xue1=xue-1;
vis[x][y]=false;
if(map[x][y]==4) xue=6;
dfs(x-1,y,dep+1,xue1);//上
dfs(x+1,y,dep+1,xue1);//下
dfs(x,y-1,dep+1,xue1);//左
dfs(x,y+1,dep+1,xue1);//右
vis[x][y]=true;
}
int main()
{
int x,y;
memset(vis,true,sizeof(vis));
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
cin>>map[i][j];
if(map[i][j]2)
x=i;
y=j;
}
dfs(x,y,0,6);
if(Min
999999) cout<<"-1"<<endl;
else cout<<Min<<endl;
}

C++本科毕业设计-ROS机械臂上位机源码(下载即用),个人经导师指导并认可通过的高分设计项目,评审分98分,项目中的源码都是经过本地编译过可运行的,都经过严格调试,确保可以运行!主要针对计算机相关专业的正在做大作业、毕业设计的学生和需要项目实战练习的学习者,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源码(下载即用)C++本科毕业设计-ROS机械臂上位机源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值