当前位置: 首页 > news >正文

队列进行迷宫求解

解题思路:

顺序队列使用数组固定容量,从起点进入并标记为-1,代表已访问,出队一个方块e检查是否是终点,若是终点则反向回溯输出完整路径,若不是则寻找四个方向可通行的方块。

关键代码:
struct Box
{
public int i, j;
public int pre;
}
class SqQueue
{
public Box[] data;
public int front, rear;
public SqQueue(int maxSize) { data = new Box[maxSize]; front = rear = -1; }
public bool IsEmpty() => front == rear;
public void EnQueue(Box e) => data[++rear] = e;
public Box DeQueue() => data[++front];
}
static void PrintPath(SqQueue qu, int index)
{
if (index < 0) return;
PrintPath(qu, qu.data[index].pre);
Console.WriteLine($"({qu.data[index].i}, {qu.data[index].j})");
}
static bool MgPath(int xi, int yi, int xe, int ye, int[,] mg)
{
int M = mg.GetLength(0), N = mg.GetLength(1);
SqQueue qu = new SqQueue(M * N);
Box e = new Box { i = xi, j = yi, pre = -1 };
qu.EnQueue(e);
mg[xi, yi] = -1;

int[] di = { -1, 0, 1, 0 };
int[] dj = { 0, 1, 0, -1 };

while (!qu.IsEmpty())
{
e = qu.DeQueue();
if (e.i == xe && e.j == ye)
{
PrintPath(qu, qu.front);
return true;
}

for (int dir = 0; dir < 4; dir++)
{
int ni = e.i + di[dir];
int nj = e.j + dj[dir];
if (ni >= 0 && ni < M && nj >= 0 && nj < N && mg[ni, nj] == 0)
{
Box next = new Box { i = ni, j = nj, pre = qu.front };
qu.EnQueue(next);
mg[ni, nj] = -1;
}
}
}
return false;
}

clone地址:https://github.com/LMingHao-study/-

http://www.jsqmd.com/news/659575/

相关文章:

  • 静态资源缓存策略与 Cache-Control 指令深度指南
  • 零代码!用Nano-Banana产品拆解引擎为技术文档自动配图
  • **发散创新:基于Go语言的协同计算框架设计与实践**在现代分布式系统中,**协同计算(Coll
  • Zotero文献格式化插件:让杂乱文献库变得井井有条的智能管家
  • Z-Image-Turbo-辉夜巫女入门指南:专为辉夜主题设计的轻量级文生图LoRA模型解析
  • FreeCAD绘图尺寸标注插件深度解析:从工程图到专业图纸的终极指南
  • Unity3D粒子系统进阶:从属性解析到动态烟雾特效实战
  • 74LS138芯片的5种典型应用场景,Multisim仿真带你玩转数字电路设计
  • Less如何实现CSS响应式导航栏_利用嵌套与媒体查询实现
  • Lychee Rerank MM惊艳效果:手写体图片Query匹配印刷体政策文档高分案例
  • 我的移动代码实验室:C4droid + GCC插件实战入门,从安装到写出第一个图形程序
  • Qsign签名服务:企业级QQ机器人开发签名验证解决方案与架构深度解析
  • iPaaS平台如何助力企业?2026年最新平台创新应用盘点
  • gte-base-zh能力展示:一键为百条短文本生成向量,效果直观可见
  • 2026年,探寻专业AI培训公司的独特魅力与价值
  • 6 文件保存功能优化
  • Phi-4-mini-reasoning企业审计合规:推理日志留存与敏感信息过滤方案
  • SQL更新日期格式不统一_利用DATE_FORMAT函数批量修正
  • Pixel Couplet Gen应用场景:线下展会扫码生成专属像素春联互动装置
  • Open Claw AI 零代码构建企业 HTML5 网站实战指南:30分钟从部署到上线
  • 精读双模态视频融合论文系列十一|湖南大学原创 UAVD-Mamba 封神!可变形 Token+Mamba 跨模态融合碾压 !
  • 除了场景切换,Unity的淡入淡出还能这么玩?创意应用与性能优化小贴士
  • 【2026奇点智能技术大会权威解码】:AI测试代码生成的5大颠覆性突破与落地陷阱预警
  • 解读核心Maintainer观点|Presto 不只是版本升级!从查询引擎到湖仓执行层,AI Infra 新方向
  • S2-Pro命令行工具开发:使用Node.js构建模型管理CLI
  • C/C++程序员必看:别再手动转换进制了!用cout和printf轻松搞定二进制/八进制/十六进制输出
  • Python黑客攻防(十)后门程序的隐蔽通信与反检测
  • 大模型推理流式响应卡顿诊断指南(2024实时通信性能黄金阈值清单)
  • 用YOLOv8给番茄‘看病’:手把手教你训练一个田间病害检测模型(附4万张数据集)
  • 【CocosCreator实战】Button组件进阶:打造动态交互与状态管理