迷宫 DFS 递归 解法

news/2024/7/24 11:30:58
/* 迷宫的递归解法 比栈解法清爽的多了 DFS小应用 总体思想 DFS+条件回溯 */ #include<iostream> #include<string> #include<cstring> #define N 30 using namespace std; int m,n,find,dir[4][2]={0,1,0,-1,1,0,-1,0};//转向控制数组 string map[N]; bool legal(int i,int j)//判断当前位置是否合法 { if(i>=0&&i<m&&j>=0&&j<n) return true; return false; } void DFS(int x,int y)//核心函数 { map[x][y]='o';//记录路径 if(x==m-1&&y==n-1)//找到的话标记find为找到 {find=1;return;} for(int i=0;i<4;i++)//探索四个方向 { int sx=x+dir[i][0],sy=y+dir[i][1]; if(legal(sx,sy)&&map[sx][sy]=='_') { DFS(sx,sy); if(!find)//根据情况进行反标记 map[sx][sy]='_';//未找到就反标记 else//找到的话就直接返回保存路径 return; } } } int main() { freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); cout<<"请按下列格式输入迷宫:"<<endl <<"1. '#'代表墙'_'代表可走路径"<<endl <<"2. 不用输入边框"<<endl <<"3. 默认为左上角为入口右下角为出口"<<endl; m=0; while(getline(cin,map[m])) m++; n=map[0].size();//得到迷宫的长和宽 if(map[0][0]=='#'||map[m-1][n-1]=='#')//特殊情况处理 {cout<<"No Solution !"<<endl;return 0;} find=0;//标志 DFS(0,0);//从左上角开始搜索路径 if(find)//找到路径情况 { cout<<endl<<"一个可能的解法为:"<<endl<<endl; for(int i=0;i<m;i++) { cout<<map[i]<<endl; } } else//未找到路径 cout<<"No Solution !"<<endl; return 0; }

http://www.niftyadmin.cn/n/1228481.html

相关文章

linux下bus,device,driver三者关系

linux下bus,device,driver三者关系 1.bus: 总线作为主机和外设的连接通道&#xff0c;有些总线是比较规范的&#xff0c;形成了很多协议。如PCI,USB,1394,IIC等。任何设备都可以选择合适的总线连接到主机。当然主机也可能就是CPU本身。内存也是通过BUS连接到主机的&#xff0c;…

Dojo interest邮件列表八月QA精选

Dojo interest list是全球Dojo用户分享经验、交流心得、提出需求、甚至向开发者报告bug的平台。经常去那儿逛逛能使人受益匪浅&#xff0c;当然一定的E文功底还是少不了的。 这里精选了10篇八月份技术类的Q&A帖&#xff0c;希望对大家有用&#xff1a; 如何使用自动完成&…

深度可分离卷积 深度卷积 逐点卷积

深度可分离卷积 深度卷积(Depthwise Convolution) 逐点卷积(Pointwise Convolution)。 深度卷积 分组卷积(Group Convolution)&#xff1a; 输入通道数cinc_{in}cin​&#xff0c;输出通道数coutc_{out}cout​, 将输入feature map分为GGG组&#xff0c;每组分别卷积&#xf…

什么是优秀的程序员

如果有人要你推荐一名优秀的程序员&#xff0c;你会想到谁&#xff1f;你认为你自己是吗&#xff1f;你的评判标准是什么&#xff1f;思考了这个问题&#xff0c;我意识到程序员可以以各种方式做到优秀。所以我向你推出“四种类型的优秀程序员”并附上插图。 1. 哲学家 哲学家…

手动实现ResNet残差网络 Pytorch代码

残差原理 网络退化&#xff08;degradation&#xff09;&#xff1a;因为梯度弥散等原因&#xff0c;在不断加神经网络的深度时&#xff0c;模型准确率会先上升然后达到饱和&#xff0c;再持续增加深度时则会导致准确率下降。 残差网络ResNet的出现就是为了解决网络深度变深以…

Android系列开发博客资源汇总

[1] 张国威&#xff1a;Android从入门到提高系列 前面写了十四篇关于界面的入门文章&#xff0c;大家都看完和跟着练习之后&#xff0c;对于常用的Layout和View都会有一定的了解了,接下来的文章就不再强调介绍界面了&#xff0c;而是针对具体的常见功能而展开。 [2] 懒骨头&a…

Pytorch 转置卷积nn.ConvTranspose2d 参数设置总结

本文总结Pytorch中用转置卷积还原卷积过程的参数设置。 直接上栗子&#xff0c;卷积过程&#xff1a; 55输入特征图&#xff0c;步长s2s2s2&#xff0c;卷积核k3k3k3&#xff0c;填充p1p1p1。 输出特征图为5−k2ps13\displaystyle \frac{5-k2p}{s}13s5−k2p​13。 转置卷积过…

GAN 生成动漫头像 手动实现Pytorch全代码

本文分享手动实现DCGAN生成动漫头像的Pytorch代码。 简单来说&#xff0c;DCGAN&#xff08;Deep Convolutional GAN&#xff09;就是用全卷积代替了原始GAN的全连接结构&#xff0c;提升了GAN的训练稳定性和生成结果质量。 我使用的数据集&#xff0c;5W张9696的动漫头像。 …